{"id":"93737d20925c63195b3d4b60d950e092","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IAstraCLPoolActions#swap\n/// @notice Any contract that calls IAstraCLPoolActions#swap must implement this interface\ninterface IAstraCLSwapCallback {\n    /// @notice Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\n    /// The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n    /// @param data Any data passed through by the caller via the IAstraCLPoolActions#swap call\n    function astraCLSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes calldata data) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport {IAstraCLPoolActions} from './pool/IAstraCLPoolActions.sol';\nimport {IAstraCLPoolDerivedState} from './pool/IAstraCLPoolDerivedState.sol';\nimport {IAstraCLPoolEvents} from './pool/IAstraCLPoolEvents.sol';\nimport {IAstraCLPoolImmutables} from './pool/IAstraCLPoolImmutables.sol';\nimport {IAstraCLPoolOwnerActions} from './pool/IAstraCLPoolOwnerActions.sol';\nimport {IAstraCLPoolState} from './pool/IAstraCLPoolState.sol';\n\n/// @title The interface for a Astra CL Pool\n/// @notice An Astra pool facilitates swapping and automated market making between any two assets that strictly conform\n/// to the ERC20 specification\n/// @dev The pool interface is broken up into many smaller pieces\ninterface IAstraCLPool is\n    IAstraCLPoolImmutables,\n    IAstraCLPoolState,\n    IAstraCLPoolDerivedState,\n    IAstraCLPoolActions,\n    IAstraCLPoolOwnerActions,\n    IAstraCLPoolEvents\n{}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissionless pool actions\n/// @notice Contains pool methods that can be called by anyone\ninterface IAstraCLPoolActions {\n    /// @notice Sets the initial price for the pool\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\n    function initialize(uint160 sqrtPriceX96) external;\n\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\n    /// @dev The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\n    /// @param recipient The address for which the liquidity will be created\n    /// @param tickLower The lower tick of the position in which to add liquidity\n    /// @param tickUpper The upper tick of the position in which to add liquidity\n    /// @param amount The amount of liquidity to mint\n    /// @param data Any data that should be passed through to the callback\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\n    function mint(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount,\n        bytes calldata data\n    ) external returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Collects tokens owed to a position\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n    /// @param recipient The address which should receive the fees collected\n    /// @param tickLower The lower tick of the position for which to collect fees\n    /// @param tickUpper The upper tick of the position for which to collect fees\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\n    /// @return amount0 The amount of fees collected in token0\n    /// @return amount1 The amount of fees collected in token1\n    function collect(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n    /// @dev Fees must be collected separately via a call to #collect\n    /// @param tickLower The lower tick of the position for which to burn liquidity\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\n    /// @param amount How much liquidity to burn\n    /// @return amount0 The amount of token0 sent to the recipient\n    /// @return amount1 The amount of token1 sent to the recipient\n    function burn(int24 tickLower, int24 tickUpper, uint128 amount) external returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Swap token0 for token1, or token1 for token0\n    /// @dev The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\n    /// @param recipient The address to receive the output of the swap\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\n    /// @param data Any data to be passed through to the callback\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\n    function swap(\n        address recipient,\n        bool zeroForOne,\n        int256 amountSpecified,\n        uint160 sqrtPriceLimitX96,\n        bytes calldata data\n    ) external returns (int256 amount0, int256 amount1);\n\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n    /// @dev The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallback\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\n    /// @param recipient The address which will receive the token0 and token1 amounts\n    /// @param amount0 The amount of token0 to send\n    /// @param amount1 The amount of token1 to send\n    /// @param data Any data to be passed through to the callback\n    function flash(address recipient, uint256 amount0, uint256 amount1, bytes calldata data) external;\n\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n    /// the input observationCardinalityNext.\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that is not stored\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n/// blockchain. The functions here may have variable gas costs.\ninterface IAstraCLPoolDerivedState {\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n    /// you must call it with secondsAgos = [3600, 0].\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n    /// timestamp\n    function observe(\n        uint32[] calldata secondsAgos\n    ) external view returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\n\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n    /// snapshot is taken and the second snapshot is taken.\n    /// @param tickLower The lower tick of the range\n    /// @param tickUpper The upper tick of the range\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\n    function snapshotCumulativesInside(\n        int24 tickLower,\n        int24 tickUpper\n    ) external view returns (int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Events emitted by a pool\n/// @notice Contains all events emitted by the pool\ninterface IAstraCLPoolEvents {\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\n\n    /// @notice Emitted when liquidity is minted for a given position\n    /// @param sender The address that minted the liquidity\n    /// @param owner The owner of the position and recipient of any minted liquidity\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount The amount of liquidity minted to the position range\n    /// @param amount0 How much token0 was required for the minted liquidity\n    /// @param amount1 How much token1 was required for the minted liquidity\n    event Mint(\n        address sender,\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @notice Emitted when fees are collected by the owner of a position\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n    /// @param owner The owner of the position for which fees are collected\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount0 The amount of token0 fees collected\n    /// @param amount1 The amount of token1 fees collected\n    event Collect(\n        address indexed owner,\n        address recipient,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount0,\n        uint128 amount1\n    );\n\n    /// @notice Emitted when a position's liquidity is removed\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n    /// @param owner The owner of the position for which liquidity is removed\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount The amount of liquidity to remove\n    /// @param amount0 The amount of token0 withdrawn\n    /// @param amount1 The amount of token1 withdrawn\n    event Burn(\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @notice Emitted by the pool for any swaps between token0 and token1\n    /// @param sender The address that initiated the swap call, and that received the callback\n    /// @param recipient The address that received the output of the swap\n    /// @param amount0 The delta of the token0 balance of the pool\n    /// @param amount1 The delta of the token1 balance of the pool\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n    /// @param liquidity The liquidity of the pool after the swap\n    /// @param tick The log base 1.0001 of price of the pool after the swap\n    event Swap(\n        address indexed sender,\n        address indexed recipient,\n        int256 amount0,\n        int256 amount1,\n        uint160 sqrtPriceX96,\n        uint128 liquidity,\n        int24 tick\n    );\n\n    /// @notice Emitted by the pool for any flashes of token0/token1\n    /// @param sender The address that initiated the swap call, and that received the callback\n    /// @param recipient The address that received the tokens from flash\n    /// @param amount0 The amount of token0 that was flashed\n    /// @param amount1 The amount of token1 that was flashed\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\n    event Flash(\n        address indexed sender,\n        address indexed recipient,\n        uint256 amount0,\n        uint256 amount1,\n        uint256 paid0,\n        uint256 paid1\n    );\n\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n    /// just before a mint/swap/burn.\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\n    event IncreaseObservationCardinalityNext(\n        uint16 observationCardinalityNextOld,\n        uint16 observationCardinalityNextNew\n    );\n\n    /// @notice Emitted when the protocol fee is changed by the pool\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\n\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\n    /// @param sender The address that collects the protocol fees\n    /// @param recipient The address that receives the collected protocol fees\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that never changes\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\ninterface IAstraCLPoolImmutables {\n    /// @notice The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\n    /// @return The contract address\n    function factory() external view returns (address);\n\n    /// @notice The first of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token0() external view returns (address);\n\n    /// @notice The second of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token1() external view returns (address);\n\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\n    /// @return The fee\n    function fee() external view returns (uint24);\n\n    /// @notice The pool tick spacing\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n    /// This value is an int24 to avoid casting even though it is always positive.\n    /// @return The tick spacing\n    function tickSpacing() external view returns (int24);\n\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n    /// @return The max amount of liquidity per tick\n    function maxLiquidityPerTick() external view returns (uint128);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissioned pool actions\n/// @notice Contains pool methods that may only be called by the factory owner\ninterface IAstraCLPoolOwnerActions {\n    /// @notice Set the denominator of the protocol's % share of the fees\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\n\n    /// @notice Collect the protocol fee accrued to the pool\n    /// @param recipient The address to which collected protocol fees should be sent\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n    /// @return amount0 The protocol fee collected in token0\n    /// @return amount1 The protocol fee collected in token1\n    function collectProtocol(\n        address recipient,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that can change\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\n/// per transaction\ninterface IAstraCLPoolState {\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n    /// when accessed externally.\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n    /// boundary.\n    /// observationIndex The index of the last oracle observation that was written,\n    /// observationCardinality The current maximum number of observations stored in the pool,\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n    /// feeProtocol The protocol fee for both tokens of the pool.\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n    /// unlocked Whether the pool is currently locked to reentrancy\n    function slot0()\n        external\n        view\n        returns (\n            uint160 sqrtPriceX96,\n            int24 tick,\n            uint16 observationIndex,\n            uint16 observationCardinality,\n            uint16 observationCardinalityNext,\n            uint8 feeProtocol,\n            bool unlocked\n        );\n\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n    /// @dev This value can overflow the uint256\n    function feeGrowthGlobal0X128() external view returns (uint256);\n\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n    /// @dev This value can overflow the uint256\n    function feeGrowthGlobal1X128() external view returns (uint256);\n\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\n    /// @dev Protocol fees will never exceed uint128 max in either token\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\n\n    /// @notice The currently in range liquidity available to the pool\n    /// @dev This value has no relationship to the total liquidity across all ticks\n    function liquidity() external view returns (uint128);\n\n    /// @notice Look up information about a specific tick in the pool\n    /// @param tick The tick to look up\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n    /// tick upper,\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\n    /// a specific position.\n    function ticks(\n        int24 tick\n    )\n        external\n        view\n        returns (\n            uint128 liquidityGross,\n            int128 liquidityNet,\n            uint256 feeGrowthOutside0X128,\n            uint256 feeGrowthOutside1X128,\n            int56 tickCumulativeOutside,\n            uint160 secondsPerLiquidityOutsideX128,\n            uint32 secondsOutside,\n            bool initialized\n        );\n\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\n\n    /// @notice Returns the information about a position by the position's key\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n    /// @return _liquidity The amount of liquidity in the position,\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\n    function positions(\n        bytes32 key\n    )\n        external\n        view\n        returns (\n            uint128 _liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        );\n\n    /// @notice Returns data about a specific observation index\n    /// @param index The element of the observations array to fetch\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n    /// ago, rather than at a specific index in the array.\n    /// @return blockTimestamp The timestamp of the observation,\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\n    function observations(\n        uint256 index\n    )\n        external\n        view\n        returns (\n            uint32 blockTimestamp,\n            int56 tickCumulative,\n            uint160 secondsPerLiquidityCumulativeX128,\n            bool initialized\n        );\n}\n"},"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Safe casting methods\n/// @notice Contains methods for safely casting between types\nlibrary SafeCast {\n    /// @notice Cast a uint256 to a uint160, revert on overflow\n    /// @param y The uint256 to be downcasted\n    /// @return z The downcasted integer, now type uint160\n    function toUint160(uint256 y) internal pure returns (uint160 z) {\n        require((z = uint160(y)) == y);\n    }\n\n    /// @notice Cast a int256 to a int128, revert on overflow or underflow\n    /// @param y The int256 to be downcasted\n    /// @return z The downcasted integer, now type int128\n    function toInt128(int256 y) internal pure returns (int128 z) {\n        require((z = int128(y)) == y);\n    }\n\n    /// @notice Cast a uint256 to a int256, revert on overflow\n    /// @param y The uint256 to be casted\n    /// @return z The casted integer, now type int256\n    function toInt256(uint256 y) internal pure returns (int256 z) {\n        require(y < 2 ** 255);\n        z = int256(y);\n    }\n}\n"},"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraPair {\n    event Approval(address indexed owner, address indexed spender, uint value);\n    event Transfer(address indexed from, address indexed to, uint value);\n\n    function name() external pure returns (string memory);\n    function symbol() external pure returns (string memory);\n    function decimals() external pure returns (uint8);\n    function totalSupply() external view returns (uint);\n    function balanceOf(address owner) external view returns (uint);\n    function allowance(address owner, address spender) external view returns (uint);\n\n    function approve(address spender, uint value) external returns (bool);\n    function transfer(address to, uint value) external returns (bool);\n    function transferFrom(address from, address to, uint value) external returns (bool);\n\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n    function nonces(address owner) external view returns (uint);\n\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\n\n    event Mint(address indexed sender, uint amount0, uint amount1);\n    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n    event Swap(\n        address indexed sender,\n        uint amount0In,\n        uint amount1In,\n        uint amount0Out,\n        uint amount1Out,\n        address indexed to\n    );\n    event Sync(uint112 reserve0, uint112 reserve1);\n\n    function MINIMUM_LIQUIDITY() external pure returns (uint);\n    function factory() external view returns (address);\n    function token0() external view returns (address);\n    function token1() external view returns (address);\n    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\n    function price0CumulativeLast() external view returns (uint);\n    function price1CumulativeLast() external view returns (uint);\n    function kLast() external view returns (uint);\n\n    function mint(address to) external returns (uint liquidity);\n    function burn(address to) external returns (uint amount0, uint amount1);\n    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\n    function skim(address to) external;\n    function sync() external;\n\n    function initialize(address, address) external;\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n    /**\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\n     *\n     * NOTE: To accept the transfer, this must return\n     * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n     * (i.e. 0xf23a6e61, or its own function selector).\n     *\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param id The ID of the token being transferred\n     * @param value The amount of tokens being transferred\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n     */\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external returns (bytes4);\n\n    /**\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\n     * been updated.\n     *\n     * NOTE: To accept the transfer(s), this must return\n     * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n     * (i.e. 0xbc197c81, or its own function selector).\n     *\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n     */\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\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 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    /**\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 `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, 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 `from` to `to` 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(\n        address from,\n        address to,\n        uint256 amount\n    ) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/base/Callbacks.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {IERC721Receiver} from '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol';\nimport {IERC1155Receiver} from '@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol';\nimport {IERC165} from '@openzeppelin/contracts/utils/introspection/IERC165.sol';\n\n/// @title ERC Callback Support\n/// @notice Implements various functions introduced by a variety of ERCs for security reasons.\n/// All are called by external contracts to ensure that this contract safely supports the ERC in question.\ncontract Callbacks is IERC721Receiver, IERC1155Receiver {\n    function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {\n        return this.onERC721Received.selector;\n    }\n\n    function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) {\n        return this.onERC1155Received.selector;\n    }\n\n    function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata)\n        external\n        pure\n        returns (bytes4)\n    {\n        return this.onERC1155BatchReceived.selector;\n    }\n\n    function supportsInterface(bytes4 interfaceId) external pure returns (bool) {\n        return interfaceId == type(IERC1155Receiver).interfaceId || interfaceId == type(IERC721Receiver).interfaceId\n            || interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"contracts/base/Dispatcher.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {ClassicSwapRouter} from '../modules/astra/classic/ClassicSwapRouter.sol';\nimport {CLSwapRouter} from '../modules/astra/cl/CLSwapRouter.sol';\nimport {BytesLib} from '../modules/astra/cl/BytesLib.sol';\nimport {Payments} from '../modules/Payments.sol';\nimport {RouterImmutables} from '../base/RouterImmutables.sol';\nimport {Callbacks} from '../base/Callbacks.sol';\nimport {Commands} from '../libraries/Commands.sol';\nimport {LockAndMsgSender} from './LockAndMsgSender.sol';\nimport {ERC721} from 'solmate/src/tokens/ERC721.sol';\nimport {ERC1155} from 'solmate/src/tokens/ERC1155.sol';\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\nimport {IAllowanceTransfer} from 'permit2/src/interfaces/IAllowanceTransfer.sol';\nimport {ICryptoPunksMarket} from '../interfaces/external/ICryptoPunksMarket.sol';\n\n/// @title Decodes and Executes Commands\n/// @notice Called by the UniversalRouter contract to efficiently decode and execute a singular command\nabstract contract Dispatcher is Payments, ClassicSwapRouter, CLSwapRouter, Callbacks, LockAndMsgSender {\n    using BytesLib for bytes;\n\n    error InvalidCommandType(uint256 commandType);\n    error BuyPunkFailed();\n    error InvalidOwnerERC721();\n    error InvalidOwnerERC1155();\n    error BalanceTooLow();\n\n    /// @notice Decodes and executes the given command with the given inputs\n    /// @param commandType The command type to execute\n    /// @param inputs The inputs to execute the command with\n    /// @dev 2 masks are used to enable use of a nested-if statement in execution for efficiency reasons\n    /// @return success True on success of the command, false on failure\n    /// @return output The outputs or error messages, if any, from the command\n    function dispatch(bytes1 commandType, bytes calldata inputs) internal returns (bool success, bytes memory output) {\n        uint256 command = uint8(commandType & Commands.COMMAND_TYPE_MASK);\n\n        success = true;\n\n        if (command < Commands.FOURTH_IF_BOUNDARY) {\n            if (command < Commands.SECOND_IF_BOUNDARY) {\n                // 0x00 <= command < 0x08\n                if (command < Commands.FIRST_IF_BOUNDARY) {\n                    if (command == Commands.CL_SWAP_EXACT_IN) {\n                        // equivalent: abi.decode(inputs, (address, uint256, uint256, bytes, bool))\n                        address recipient;\n                        uint256 amountIn;\n                        uint256 amountOutMin;\n                        bool payerIsUser;\n                        assembly {\n                            recipient := calldataload(inputs.offset)\n                            amountIn := calldataload(add(inputs.offset, 0x20))\n                            amountOutMin := calldataload(add(inputs.offset, 0x40))\n                            // 0x60 offset is the path, decoded below\n                            payerIsUser := calldataload(add(inputs.offset, 0x80))\n                        }\n                        bytes calldata path = inputs.toBytes(3);\n                        address payer = payerIsUser ? lockedBy : address(this);\n                        clSwapExactInput(map(recipient), amountIn, amountOutMin, path, payer);\n                    } else if (command == Commands.CL_SWAP_EXACT_OUT) {\n                        // equivalent: abi.decode(inputs, (address, uint256, uint256, bytes, bool))\n                        address recipient;\n                        uint256 amountOut;\n                        uint256 amountInMax;\n                        bool payerIsUser;\n                        assembly {\n                            recipient := calldataload(inputs.offset)\n                            amountOut := calldataload(add(inputs.offset, 0x20))\n                            amountInMax := calldataload(add(inputs.offset, 0x40))\n                            // 0x60 offset is the path, decoded below\n                            payerIsUser := calldataload(add(inputs.offset, 0x80))\n                        }\n                        bytes calldata path = inputs.toBytes(3);\n                        address payer = payerIsUser ? lockedBy : address(this);\n                        clSwapExactOutput(map(recipient), amountOut, amountInMax, path, payer);\n                    } else if (command == Commands.PERMIT2_TRANSFER_FROM) {\n                        // equivalent: abi.decode(inputs, (address, address, uint160))\n                        address token;\n                        address recipient;\n                        uint160 amount;\n                        assembly {\n                            token := calldataload(inputs.offset)\n                            recipient := calldataload(add(inputs.offset, 0x20))\n                            amount := calldataload(add(inputs.offset, 0x40))\n                        }\n                        permit2TransferFrom(token, lockedBy, map(recipient), amount);\n                    } else if (command == Commands.PERMIT2_PERMIT_BATCH) {\n                        (IAllowanceTransfer.PermitBatch memory permitBatch,) =\n                            abi.decode(inputs, (IAllowanceTransfer.PermitBatch, bytes));\n                        bytes calldata data = inputs.toBytes(1);\n                        PERMIT2.permit(lockedBy, permitBatch, data);\n                    } else if (command == Commands.SWEEP) {\n                        // equivalent:  abi.decode(inputs, (address, address, uint256))\n                        address token;\n                        address recipient;\n                        uint160 amountMin;\n                        assembly {\n                            token := calldataload(inputs.offset)\n                            recipient := calldataload(add(inputs.offset, 0x20))\n                            amountMin := calldataload(add(inputs.offset, 0x40))\n                        }\n                        Payments.sweep(token, map(recipient), amountMin);\n                    } else if (command == Commands.TRANSFER) {\n                        // equivalent:  abi.decode(inputs, (address, address, uint256))\n                        address token;\n                        address recipient;\n                        uint256 value;\n                        assembly {\n                            token := calldataload(inputs.offset)\n                            recipient := calldataload(add(inputs.offset, 0x20))\n                            value := calldataload(add(inputs.offset, 0x40))\n                        }\n                        Payments.pay(token, map(recipient), value);\n                    } else if (command == Commands.PAY_PORTION) {\n                        // equivalent:  abi.decode(inputs, (address, address, uint256))\n                        address token;\n                        address recipient;\n                        uint256 bips;\n                        assembly {\n                            token := calldataload(inputs.offset)\n                            recipient := calldataload(add(inputs.offset, 0x20))\n                            bips := calldataload(add(inputs.offset, 0x40))\n                        }\n                        Payments.payPortion(token, map(recipient), bips);\n                    } else {\n                        // placeholder area for command 0x07\n                        revert InvalidCommandType(command);\n                    }\n                    // 0x08 <= command < 0x10\n                } else {\n                    if (command == Commands.CLASSIC_SWAP_EXACT_IN) {\n                        // equivalent: abi.decode(inputs, (address, uint256, uint256, bytes, bool))\n                        address recipient;\n                        uint256 amountIn;\n                        uint256 amountOutMin;\n                        bool payerIsUser;\n                        assembly {\n                            recipient := calldataload(inputs.offset)\n                            amountIn := calldataload(add(inputs.offset, 0x20))\n                            amountOutMin := calldataload(add(inputs.offset, 0x40))\n                            // 0x60 offset is the path, decoded below\n                            payerIsUser := calldataload(add(inputs.offset, 0x80))\n                        }\n                        address[] calldata path = inputs.toAddressArray(3);\n                        address payer = payerIsUser ? lockedBy : address(this);\n                        classicSwapExactInput(map(recipient), amountIn, amountOutMin, path, payer);\n                    } else if (command == Commands.CLASSIC_SWAP_EXACT_OUT) {\n                        // equivalent: abi.decode(inputs, (address, uint256, uint256, bytes, bool))\n                        address recipient;\n                        uint256 amountOut;\n                        uint256 amountInMax;\n                        bool payerIsUser;\n                        assembly {\n                            recipient := calldataload(inputs.offset)\n                            amountOut := calldataload(add(inputs.offset, 0x20))\n                            amountInMax := calldataload(add(inputs.offset, 0x40))\n                            // 0x60 offset is the path, decoded below\n                            payerIsUser := calldataload(add(inputs.offset, 0x80))\n                        }\n                        address[] calldata path = inputs.toAddressArray(3);\n                        address payer = payerIsUser ? lockedBy : address(this);\n                        classicSwapExactOutput(map(recipient), amountOut, amountInMax, path, payer);\n                    } else if (command == Commands.PERMIT2_PERMIT) {\n                        // equivalent: abi.decode(inputs, (IAllowanceTransfer.PermitSingle, bytes))\n                        IAllowanceTransfer.PermitSingle calldata permitSingle;\n                        assembly {\n                            permitSingle := inputs.offset\n                        }\n                        bytes calldata data = inputs.toBytes(6); // PermitSingle takes first 6 slots (0..5)\n                        PERMIT2.permit(lockedBy, permitSingle, data);\n                    } else if (command == Commands.WRAP_AMB) {\n                        // equivalent: abi.decode(inputs, (address, uint256))\n                        address recipient;\n                        uint256 amountMin;\n                        assembly {\n                            recipient := calldataload(inputs.offset)\n                            amountMin := calldataload(add(inputs.offset, 0x20))\n                        }\n                        Payments.wrapAMB(map(recipient), amountMin);\n                    } else if (command == Commands.UNWRAP_SAMB) {\n                        // equivalent: abi.decode(inputs, (address, uint256))\n                        address recipient;\n                        uint256 amountMin;\n                        assembly {\n                            recipient := calldataload(inputs.offset)\n                            amountMin := calldataload(add(inputs.offset, 0x20))\n                        }\n                        Payments.unwrapSAMB(map(recipient), amountMin);\n                    } else if (command == Commands.PERMIT2_TRANSFER_FROM_BATCH) {\n                        (IAllowanceTransfer.AllowanceTransferDetails[] memory batchDetails) =\n                            abi.decode(inputs, (IAllowanceTransfer.AllowanceTransferDetails[]));\n                        permit2TransferFrom(batchDetails, lockedBy);\n                    } else if (command == Commands.BALANCE_CHECK_ERC20) {\n                        // equivalent: abi.decode(inputs, (address, address, uint256))\n                        address owner;\n                        address token;\n                        uint256 minBalance;\n                        assembly {\n                            owner := calldataload(inputs.offset)\n                            token := calldataload(add(inputs.offset, 0x20))\n                            minBalance := calldataload(add(inputs.offset, 0x40))\n                        }\n                        success = (ERC20(token).balanceOf(owner) >= minBalance);\n                        if (!success) output = abi.encodePacked(BalanceTooLow.selector);\n                    } else {\n                        // placeholder area for command 0x0f\n                        revert InvalidCommandType(command);\n                    }\n                }\n                // 0x10 <= command\n            } else {\n                // 0x10 <= command < 0x18\n                if (command < Commands.THIRD_IF_BOUNDARY) {\n                    if (command == Commands.SEAPORT_V1_5) {\n                        /// @dev Seaport 1.4 and 1.5 allow for orders to be created by contracts.\n                        ///     These orders pass control to the contract offerers during fufillment,\n                        ///         allowing them to perform any number of destructive actions as a holder of the NFT.\n                        ///     Integrators should be aware that in some scenarios: e.g. purchasing an NFT that allows the holder\n                        ///         to claim another NFT, the contract offerer can \"steal\" the claim during order fufillment.\n                        ///     For some such purchases, an OWNER_CHECK command can be prepended to ensure that all tokens have the desired owner at the end of the transaction.\n                        ///     This is also outlined in the Seaport documentation: https://github.com/ProjectOpenSea/seaport/blob/main/docs/SeaportDocumentation.md\n                        (uint256 value, bytes calldata data) = getValueAndData(inputs);\n                        (success, output) = SEAPORT_V1_5.call{value: value}(data);\n                    } else if (command == Commands.LOOKS_RARE_V2) {\n                        // equivalent: abi.decode(inputs, (uint256, bytes))\n                        uint256 value;\n                        assembly {\n                            value := calldataload(inputs.offset)\n                        }\n                        bytes calldata data = inputs.toBytes(1);\n                        (success, output) = LOOKS_RARE_V2.call{value: value}(data);\n                    } else if (command == Commands.NFTX) {\n                        // equivalent: abi.decode(inputs, (uint256, bytes))\n                        (uint256 value, bytes calldata data) = getValueAndData(inputs);\n                        (success, output) = NFTX_ZAP.call{value: value}(data);\n                    } else if (command == Commands.CRYPTOPUNKS) {\n                        // equivalent: abi.decode(inputs, (uint256, address, uint256))\n                        uint256 punkId;\n                        address recipient;\n                        uint256 value;\n                        assembly {\n                            punkId := calldataload(inputs.offset)\n                            recipient := calldataload(add(inputs.offset, 0x20))\n                            value := calldataload(add(inputs.offset, 0x40))\n                        }\n                        (success, output) = CRYPTOPUNKS.call{value: value}(\n                            abi.encodeWithSelector(ICryptoPunksMarket.buyPunk.selector, punkId)\n                        );\n                        if (success) ICryptoPunksMarket(CRYPTOPUNKS).transferPunk(map(recipient), punkId);\n                        else output = abi.encodePacked(BuyPunkFailed.selector);\n                    } else if (command == Commands.OWNER_CHECK_721) {\n                        // equivalent: abi.decode(inputs, (address, address, uint256))\n                        address owner;\n                        address token;\n                        uint256 id;\n                        assembly {\n                            owner := calldataload(inputs.offset)\n                            token := calldataload(add(inputs.offset, 0x20))\n                            id := calldataload(add(inputs.offset, 0x40))\n                        }\n                        success = (ERC721(token).ownerOf(id) == owner);\n                        if (!success) output = abi.encodePacked(InvalidOwnerERC721.selector);\n                    } else if (command == Commands.OWNER_CHECK_1155) {\n                        // equivalent: abi.decode(inputs, (address, address, uint256, uint256))\n                        address owner;\n                        address token;\n                        uint256 id;\n                        uint256 minBalance;\n                        assembly {\n                            owner := calldataload(inputs.offset)\n                            token := calldataload(add(inputs.offset, 0x20))\n                            id := calldataload(add(inputs.offset, 0x40))\n                            minBalance := calldataload(add(inputs.offset, 0x60))\n                        }\n                        success = (ERC1155(token).balanceOf(owner, id) >= minBalance);\n                        if (!success) output = abi.encodePacked(InvalidOwnerERC1155.selector);\n                    } else if (command == Commands.SWEEP_ERC721) {\n                        // equivalent: abi.decode(inputs, (address, address, uint256))\n                        address token;\n                        address recipient;\n                        uint256 id;\n                        assembly {\n                            token := calldataload(inputs.offset)\n                            recipient := calldataload(add(inputs.offset, 0x20))\n                            id := calldataload(add(inputs.offset, 0x40))\n                        }\n                        Payments.sweepERC721(token, map(recipient), id);\n                    }\n                    // 0x18 <= command < 0x1f\n                } else {\n                    if (command == Commands.X2Y2_721) {\n                        (success, output) = callAndTransfer721(inputs, X2Y2);\n                    } else if (command == Commands.SUDOSWAP) {\n                        // equivalent: abi.decode(inputs, (uint256, bytes))\n                        (uint256 value, bytes calldata data) = getValueAndData(inputs);\n                        (success, output) = SUDOSWAP.call{value: value}(data);\n                    } else if (command == Commands.NFT20) {\n                        // equivalent: abi.decode(inputs, (uint256, bytes))\n                        (uint256 value, bytes calldata data) = getValueAndData(inputs);\n                        (success, output) = NFT20_ZAP.call{value: value}(data);\n                    } else if (command == Commands.X2Y2_1155) {\n                        (success, output) = callAndTransfer1155(inputs, X2Y2);\n                    } else if (command == Commands.FOUNDATION) {\n                        (success, output) = callAndTransfer721(inputs, FOUNDATION);\n                    } else if (command == Commands.SWEEP_ERC1155) {\n                        // equivalent: abi.decode(inputs, (address, address, uint256, uint256))\n                        address token;\n                        address recipient;\n                        uint256 id;\n                        uint256 amount;\n                        assembly {\n                            token := calldataload(inputs.offset)\n                            recipient := calldataload(add(inputs.offset, 0x20))\n                            id := calldataload(add(inputs.offset, 0x40))\n                            amount := calldataload(add(inputs.offset, 0x60))\n                        }\n                        Payments.sweepERC1155(token, map(recipient), id, amount);\n                    } else if (command == Commands.ELEMENT_MARKET) {\n                        // equivalent: abi.decode(inputs, (uint256, bytes))\n                        (uint256 value, bytes calldata data) = getValueAndData(inputs);\n                        (success, output) = ELEMENT_MARKET.call{value: value}(data);\n                    } else {\n                        // placeholder for command 0x1f\n                        revert InvalidCommandType(command);\n                    }\n                }\n            }\n            // 0x20 <= command\n        } else {\n            if (command == Commands.SEAPORT_V1_4) {\n                /// @dev Seaport 1.4 and 1.5 allow for orders to be created by contracts.\n                ///     These orders pass control to the contract offerers during fufillment,\n                ///         allowing them to perform any number of destructive actions as a holder of the NFT.\n                ///     Integrators should be aware that in some scenarios: e.g. purchasing an NFT that allows the holder\n                ///         to claim another NFT, the contract offerer can \"steal\" the claim during order fufillment.\n                ///     For some such purchases, an OWNER_CHECK command can be prepended to ensure that all tokens have the desired owner at the end of the transaction.\n                ///     This is also outlined in the Seaport documentation: https://github.com/ProjectOpenSea/seaport/blob/main/docs/SeaportDocumentation.md\n                (uint256 value, bytes calldata data) = getValueAndData(inputs);\n                (success, output) = SEAPORT_V1_4.call{value: value}(data);\n            } else if (command == Commands.EXECUTE_SUB_PLAN) {\n                bytes calldata _commands = inputs.toBytes(0);\n                bytes[] calldata _inputs = inputs.toBytesArray(1);\n                (success, output) =\n                    (address(this)).call(abi.encodeWithSelector(Dispatcher.execute.selector, _commands, _inputs));\n            } else if (command == Commands.APPROVE_ERC20) {\n                ERC20 token;\n                RouterImmutables.Spenders spender;\n                assembly {\n                    token := calldataload(inputs.offset)\n                    spender := calldataload(add(inputs.offset, 0x20))\n                }\n                Payments.approveERC20(token, spender);\n            } else {\n                // placeholder area for commands 0x22-0x3f\n                revert InvalidCommandType(command);\n            }\n        }\n    }\n\n    /// @notice Executes encoded commands along with provided inputs.\n    /// @param commands A set of concatenated commands, each 1 byte in length\n    /// @param inputs An array of byte strings containing abi encoded inputs for each command\n    function execute(bytes calldata commands, bytes[] calldata inputs) external payable virtual;\n\n    /// @notice Performs a call to purchase an ERC721, then transfers the ERC721 to a specified recipient\n    /// @param inputs The inputs for the protocol and ERC721 transfer, encoded\n    /// @param protocol The protocol to pass the calldata to\n    /// @return success True on success of the command, false on failure\n    /// @return output The outputs or error messages, if any, from the command\n    function callAndTransfer721(bytes calldata inputs, address protocol)\n        internal\n        returns (bool success, bytes memory output)\n    {\n        // equivalent: abi.decode(inputs, (uint256, bytes, address, address, uint256))\n        (uint256 value, bytes calldata data) = getValueAndData(inputs);\n        address recipient;\n        address token;\n        uint256 id;\n        assembly {\n            // 0x00 and 0x20 offsets are value and data, above\n            recipient := calldataload(add(inputs.offset, 0x40))\n            token := calldataload(add(inputs.offset, 0x60))\n            id := calldataload(add(inputs.offset, 0x80))\n        }\n        (success, output) = protocol.call{value: value}(data);\n        if (success) ERC721(token).safeTransferFrom(address(this), map(recipient), id);\n    }\n\n    /// @notice Performs a call to purchase an ERC1155, then transfers the ERC1155 to a specified recipient\n    /// @param inputs The inputs for the protocol and ERC1155 transfer, encoded\n    /// @param protocol The protocol to pass the calldata to\n    /// @return success True on success of the command, false on failure\n    /// @return output The outputs or error messages, if any, from the command\n    function callAndTransfer1155(bytes calldata inputs, address protocol)\n        internal\n        returns (bool success, bytes memory output)\n    {\n        // equivalent: abi.decode(inputs, (uint256, bytes, address, address, uint256, uint256))\n        (uint256 value, bytes calldata data) = getValueAndData(inputs);\n        address recipient;\n        address token;\n        uint256 id;\n        uint256 amount;\n        assembly {\n            // 0x00 and 0x20 offsets are value and data, above\n            recipient := calldataload(add(inputs.offset, 0x40))\n            token := calldataload(add(inputs.offset, 0x60))\n            id := calldataload(add(inputs.offset, 0x80))\n            amount := calldataload(add(inputs.offset, 0xa0))\n        }\n        (success, output) = protocol.call{value: value}(data);\n        if (success) ERC1155(token).safeTransferFrom(address(this), map(recipient), id, amount, new bytes(0));\n    }\n\n    /// @notice Helper function to extract `value` and `data` parameters from input bytes string\n    /// @dev The helper assumes that `value` is the first parameter, and `data` is the second\n    /// @param inputs The bytes string beginning with value and data parameters\n    /// @return value The 256 bit integer value\n    /// @return data The data bytes string\n    function getValueAndData(bytes calldata inputs) internal pure returns (uint256 value, bytes calldata data) {\n        assembly {\n            value := calldataload(inputs.offset)\n        }\n        data = inputs.toBytes(1);\n    }\n}\n"},"contracts/base/LockAndMsgSender.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {Constants} from '../libraries/Constants.sol';\n\ncontract LockAndMsgSender {\n    error ContractLocked();\n\n    address internal constant NOT_LOCKED_FLAG = address(1);\n    address internal lockedBy = NOT_LOCKED_FLAG;\n\n    modifier isNotLocked() {\n        if (msg.sender != address(this)) {\n            if (lockedBy != NOT_LOCKED_FLAG) revert ContractLocked();\n            lockedBy = msg.sender;\n            _;\n            lockedBy = NOT_LOCKED_FLAG;\n        } else {\n            _;\n        }\n    }\n\n    /// @notice Calculates the recipient address for a command\n    /// @param recipient The recipient or recipient-flag for the command\n    /// @return output The resultant recipient for the command\n    function map(address recipient) internal view returns (address) {\n        if (recipient == Constants.MSG_SENDER) {\n            return lockedBy;\n        } else if (recipient == Constants.ADDRESS_THIS) {\n            return address(this);\n        } else {\n            return recipient;\n        }\n    }\n}\n"},"contracts/base/RewardsCollector.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.15;\n\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\nimport {SafeTransferLib} from 'solmate/src/utils/SafeTransferLib.sol';\nimport {RouterImmutables} from './RouterImmutables.sol';\nimport {IRewardsCollector} from '../interfaces/IRewardsCollector.sol';\n\nabstract contract RewardsCollector is IRewardsCollector, RouterImmutables {\n    using SafeTransferLib for ERC20;\n\n    event RewardsSent(uint256 amount);\n\n    error UnableToClaim();\n\n    /// @inheritdoc IRewardsCollector\n    function collectRewards(bytes calldata looksRareClaim) external {\n        (bool success,) = LOOKS_RARE_REWARDS_DISTRIBUTOR.call(looksRareClaim);\n        if (!success) revert UnableToClaim();\n\n        uint256 balance = LOOKS_RARE_TOKEN.balanceOf(address(this));\n        LOOKS_RARE_TOKEN.transfer(ROUTER_REWARDS_DISTRIBUTOR, balance);\n        emit RewardsSent(balance);\n    }\n}\n"},"contracts/base/RouterImmutables.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {IAllowanceTransfer} from 'permit2/src/interfaces/IAllowanceTransfer.sol';\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\nimport {ISAMB} from '../interfaces/external/ISAMB.sol';\n\nstruct RouterParameters {\n    address permit2;\n    address samb;\n    address seaportV1_5;\n    address seaportV1_4;\n    address openseaConduit;\n    address nftxZap;\n    address x2y2;\n    address foundation;\n    address sudoswap;\n    address elementMarket;\n    address nft20Zap;\n    address cryptopunks;\n    address looksRareV2;\n    address routerRewardsDistributor;\n    address looksRareRewardsDistributor;\n    address looksRareToken;\n    address classicFactory;\n    address clFactory;\n    bytes32 pairInitCodeHash;\n    bytes32 poolInitCodeHash;\n}\n\n/// @title Router Immutable Storage contract\n/// @notice Used along with the `RouterParameters` struct for ease of cross-chain deployment\ncontract RouterImmutables {\n    /// @dev SAMB address\n    ISAMB internal immutable SAMB;\n\n    /// @dev Permit2 address\n    IAllowanceTransfer internal immutable PERMIT2;\n\n    /// @dev Seaport 1.5 address\n    address internal immutable SEAPORT_V1_5;\n\n    /// @dev Seaport 1.4 address\n    address internal immutable SEAPORT_V1_4;\n\n    /// @dev The address of OpenSea's conduit used in both Seaport 1.4 and Seaport 1.5\n    address internal immutable OPENSEA_CONDUIT;\n\n    /// @dev The address of NFTX zap contract for interfacing with vaults\n    address internal immutable NFTX_ZAP;\n\n    /// @dev The address of X2Y2\n    address internal immutable X2Y2;\n\n    // @dev The address of Foundation\n    address internal immutable FOUNDATION;\n\n    // @dev The address of Sudoswap's router\n    address internal immutable SUDOSWAP;\n\n    // @dev The address of Element Market\n    address internal immutable ELEMENT_MARKET;\n\n    // @dev the address of NFT20's zap contract\n    address internal immutable NFT20_ZAP;\n\n    // @dev the address of Larva Lab's cryptopunks marketplace\n    address internal immutable CRYPTOPUNKS;\n\n    /// @dev The address of LooksRareV2\n    address internal immutable LOOKS_RARE_V2;\n\n    /// @dev The address of LooksRare token\n    ERC20 internal immutable LOOKS_RARE_TOKEN;\n\n    /// @dev The address of LooksRare rewards distributor\n    address internal immutable LOOKS_RARE_REWARDS_DISTRIBUTOR;\n\n    /// @dev The address of router rewards distributor\n    address internal immutable ROUTER_REWARDS_DISTRIBUTOR;\n\n    /// @dev The address of AstraFactory\n    address internal immutable ASTRA_CLASSIC_FACTORY;\n\n    /// @dev The AstraPair initcodehash\n    bytes32 internal immutable ASTRA_CLASSIC_PAIR_INIT_CODE_HASH;\n\n    /// @dev The address of AstraCLFactory\n    address internal immutable ASTRA_CL_FACTORY;\n\n    /// @dev The AstraCLPool initcodehash\n    bytes32 internal immutable ASTRA_CL_POOL_INIT_CODE_HASH;\n\n    enum Spenders {\n        OSConduit,\n        Sudoswap\n    }\n\n    constructor(RouterParameters memory params) {\n        PERMIT2 = IAllowanceTransfer(params.permit2);\n        SAMB = ISAMB(params.samb);\n        SEAPORT_V1_5 = params.seaportV1_5;\n        SEAPORT_V1_4 = params.seaportV1_4;\n        OPENSEA_CONDUIT = params.openseaConduit;\n        NFTX_ZAP = params.nftxZap;\n        X2Y2 = params.x2y2;\n        FOUNDATION = params.foundation;\n        SUDOSWAP = params.sudoswap;\n        ELEMENT_MARKET = params.elementMarket;\n        NFT20_ZAP = params.nft20Zap;\n        CRYPTOPUNKS = params.cryptopunks;\n        LOOKS_RARE_V2 = params.looksRareV2;\n        LOOKS_RARE_TOKEN = ERC20(params.looksRareToken);\n        LOOKS_RARE_REWARDS_DISTRIBUTOR = params.looksRareRewardsDistributor;\n        ROUTER_REWARDS_DISTRIBUTOR = params.routerRewardsDistributor;\n        ASTRA_CLASSIC_FACTORY = params.classicFactory;\n        ASTRA_CLASSIC_PAIR_INIT_CODE_HASH = params.pairInitCodeHash;\n        ASTRA_CL_FACTORY = params.clFactory;\n        ASTRA_CL_POOL_INIT_CODE_HASH = params.poolInitCodeHash;\n    }\n}\n"},"contracts/deploy/UnsupportedProtocol.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\n/// @title Dummy contract that always reverts\n/// @notice Used as a placeholder to ensure reverts on attempted calls to protocols unsupported on a given chain\ncontract UnsupportedProtocol {\n    error UnsupportedProtocolError();\n\n    fallback() external {\n        revert UnsupportedProtocolError();\n    }\n}\n"},"contracts/interfaces/external/ICryptoPunksMarket.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.4;\n\n/// @title Interface for CryptoPunksMarket\ninterface ICryptoPunksMarket {\n    /// @notice Buy a cryptopunk\n    function buyPunk(uint256 punkIndex) external payable;\n\n    /// @notice Transfer a cryptopunk to another address\n    function transferPunk(address to, uint256 punkIndex) external;\n}\n"},"contracts/interfaces/external/ISAMB.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.4;\n\nimport {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\n/// @title Interface for WETH9\ninterface ISAMB is IERC20 {\n    /// @notice Deposit ether to get wrapped ether\n    function deposit() external payable;\n\n    /// @notice Withdraw wrapped ether to get ether\n    function withdraw(uint256) external;\n}\n"},"contracts/interfaces/IRewardsCollector.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.15;\n\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\n\n/// @title LooksRare Rewards Collector\n/// @notice Implements a permissionless call to fetch LooksRare rewards earned by Universal Router users\n/// and transfers them to an external rewards distributor contract\ninterface IRewardsCollector {\n    /// @notice Fetches users' LooksRare rewards and sends them to the distributor contract\n    /// @param looksRareClaim The data required by LooksRare to claim reward tokens\n    function collectRewards(bytes calldata looksRareClaim) external;\n}\n"},"contracts/interfaces/IUniversalRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {IERC721Receiver} from '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol';\nimport {IERC1155Receiver} from '@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol';\nimport {IRewardsCollector} from './IRewardsCollector.sol';\n\ninterface IUniversalRouter is IRewardsCollector, IERC721Receiver, IERC1155Receiver {\n    /// @notice Thrown when a required command has failed\n    error ExecutionFailed(uint256 commandIndex, bytes message);\n\n    /// @notice Thrown when attempting to send AMB directly to the contract\n    error AMBNotAccepted();\n\n    /// @notice Thrown when executing commands with an expired deadline\n    error TransactionDeadlinePassed();\n\n    /// @notice Thrown when attempting to execute commands and an incorrect number of inputs are provided\n    error LengthMismatch();\n\n    /// @notice Executes encoded commands along with provided inputs. Reverts if deadline has expired.\n    /// @param commands A set of concatenated commands, each 1 byte in length\n    /// @param inputs An array of byte strings containing abi encoded inputs for each command\n    /// @param deadline The deadline by which the transaction must be executed\n    function execute(bytes calldata commands, bytes[] calldata inputs, uint256 deadline) external payable;\n}\n"},"contracts/libraries/Commands.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\n/// @title Commands\n/// @notice Command Flags used to decode commands\nlibrary Commands {\n    // Masks to extract certain bits of commands\n    bytes1 internal constant FLAG_ALLOW_REVERT = 0x80;\n    bytes1 internal constant COMMAND_TYPE_MASK = 0x3f;\n\n    // Command Types. Maximum supported command at this moment is 0x3f.\n\n    // Command Types where value<0x08, executed in the first nested-if block\n    uint256 constant CL_SWAP_EXACT_IN = 0x00;\n    uint256 constant CL_SWAP_EXACT_OUT = 0x01;\n    uint256 constant PERMIT2_TRANSFER_FROM = 0x02;\n    uint256 constant PERMIT2_PERMIT_BATCH = 0x03;\n    uint256 constant SWEEP = 0x04;\n    uint256 constant TRANSFER = 0x05;\n    uint256 constant PAY_PORTION = 0x06;\n    // COMMAND_PLACEHOLDER = 0x07;\n\n    // The commands are executed in nested if blocks to minimise gas consumption\n    // The following constant defines one of the boundaries where the if blocks split commands\n    uint256 constant FIRST_IF_BOUNDARY = 0x08;\n\n    // Command Types where 0x08<=value<=0x0f, executed in the second nested-if block\n    uint256 constant CLASSIC_SWAP_EXACT_IN = 0x08;\n    uint256 constant CLASSIC_SWAP_EXACT_OUT = 0x09;\n    uint256 constant PERMIT2_PERMIT = 0x0a;\n    uint256 constant WRAP_AMB = 0x0b;\n    uint256 constant UNWRAP_SAMB = 0x0c;\n    uint256 constant PERMIT2_TRANSFER_FROM_BATCH = 0x0d;\n    uint256 constant BALANCE_CHECK_ERC20 = 0x0e;\n    // COMMAND_PLACEHOLDER = 0x0f;\n\n    // The commands are executed in nested if blocks to minimise gas consumption\n    // The following constant defines one of the boundaries where the if blocks split commands\n    uint256 constant SECOND_IF_BOUNDARY = 0x10;\n\n    // Command Types where 0x10<=value<0x18, executed in the third nested-if block\n    uint256 constant SEAPORT_V1_5 = 0x10;\n    uint256 constant LOOKS_RARE_V2 = 0x11;\n    uint256 constant NFTX = 0x12;\n    uint256 constant CRYPTOPUNKS = 0x13;\n    // 0x14;\n    uint256 constant OWNER_CHECK_721 = 0x15;\n    uint256 constant OWNER_CHECK_1155 = 0x16;\n    uint256 constant SWEEP_ERC721 = 0x17;\n\n    // The commands are executed in nested if blocks to minimise gas consumption\n    // The following constant defines one of the boundaries where the if blocks split commands\n    uint256 constant THIRD_IF_BOUNDARY = 0x18;\n\n    // Command Types where 0x18<=value<=0x1f, executed in the final nested-if block\n    uint256 constant X2Y2_721 = 0x18;\n    uint256 constant SUDOSWAP = 0x19;\n    uint256 constant NFT20 = 0x1a;\n    uint256 constant X2Y2_1155 = 0x1b;\n    uint256 constant FOUNDATION = 0x1c;\n    uint256 constant SWEEP_ERC1155 = 0x1d;\n    uint256 constant ELEMENT_MARKET = 0x1e;\n    // COMMAND_PLACEHOLDER = 0x1f;\n\n    // The commands are executed in nested if blocks to minimise gas consumption\n    // The following constant defines one of the boundaries where the if blocks split commands\n    uint256 constant FOURTH_IF_BOUNDARY = 0x20;\n\n    // Command Types where 0x20<=value\n    uint256 constant SEAPORT_V1_4 = 0x20;\n    uint256 constant EXECUTE_SUB_PLAN = 0x21;\n    uint256 constant APPROVE_ERC20 = 0x22;\n    // COMMAND_PLACEHOLDER for 0x23 to 0x3f (all unused)\n}\n"},"contracts/libraries/Constants.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {ISAMB} from '../interfaces/external/ISAMB.sol';\n\n/// @title Constant state\n/// @notice Constant state used by the Universal Router\nlibrary Constants {\n    /// @dev Used for identifying cases when this contract's balance of a token is to be used as an input\n    /// This value is equivalent to 1<<255, i.e. a singular 1 in the most significant bit.\n    uint256 internal constant CONTRACT_BALANCE = 0x8000000000000000000000000000000000000000000000000000000000000000;\n\n    /// @dev Used for identifying cases when a classic pair has already received input tokens\n    uint256 internal constant ALREADY_PAID = 0;\n\n    /// @dev Used as a flag for identifying the transfer of AMB instead of a token\n    address internal constant AMB = address(0);\n\n    /// @dev Used as a flag for identifying that msg.sender should be used, saves gas by sending more 0 bytes\n    address internal constant MSG_SENDER = address(1);\n\n    /// @dev Used as a flag for identifying address(this) should be used, saves gas by sending more 0 bytes\n    address internal constant ADDRESS_THIS = address(2);\n\n    /// @dev The length of the bytes encoded address\n    uint256 internal constant ADDR_SIZE = 20;\n\n    /// @dev The length of the bytes encoded fee\n    uint256 internal constant CL_FEE_SIZE = 3;\n\n    /// @dev The offset of a single token address (20) and pool fee (3)\n    uint256 internal constant NEXT_CL_POOL_OFFSET = ADDR_SIZE + CL_FEE_SIZE;\n\n    /// @dev The offset of an encoded pool key\n    /// Token (20) + Fee (3) + Token (20) = 43\n    uint256 internal constant CL_POP_OFFSET = NEXT_CL_POOL_OFFSET + ADDR_SIZE;\n\n    /// @dev The minimum length of an encoding that contains 2 or more pools\n    uint256 internal constant MULTIPLE_CL_POOLS_MIN_LENGTH = CL_POP_OFFSET + NEXT_CL_POOL_OFFSET;\n}\n"},"contracts/modules/astra/cl/BytesLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\n/// @title Library for Bytes Manipulation\npragma solidity ^0.8.0;\n\nimport {Constants} from '../../../libraries/Constants.sol';\n\nlibrary BytesLib {\n    error SliceOutOfBounds();\n\n    /// @notice Returns the address starting at byte 0\n    /// @dev length and overflow checks must be carried out before calling\n    /// @param _bytes The input bytes string to slice\n    /// @return _address The address starting at byte 0\n    function toAddress(bytes calldata _bytes) internal pure returns (address _address) {\n        if (_bytes.length < Constants.ADDR_SIZE) revert SliceOutOfBounds();\n        assembly {\n            _address := shr(96, calldataload(_bytes.offset))\n        }\n    }\n\n    /// @notice Returns the pool details starting at byte 0\n    /// @dev length and overflow checks must be carried out before calling\n    /// @param _bytes The input bytes string to slice\n    /// @return token0 The address at byte 0\n    /// @return fee The uint24 starting at byte 20\n    /// @return token1 The address at byte 23\n    function toPool(bytes calldata _bytes) internal pure returns (address token0, uint24 fee, address token1) {\n        if (_bytes.length < Constants.CL_POP_OFFSET) revert SliceOutOfBounds();\n        assembly {\n            let firstWord := calldataload(_bytes.offset)\n            token0 := shr(96, firstWord)\n            fee := and(shr(72, firstWord), 0xffffff)\n            token1 := shr(96, calldataload(add(_bytes.offset, 23)))\n        }\n    }\n\n    /// @notice Decode the `_arg`-th element in `_bytes` as a dynamic array\n    /// @dev The decoding of `length` and `offset` is universal,\n    /// whereas the type declaration of `res` instructs the compiler how to read it.\n    /// @param _bytes The input bytes string to slice\n    /// @param _arg The index of the argument to extract\n    /// @return length Length of the array\n    /// @return offset Pointer to the data part of the array\n    function toLengthOffset(bytes calldata _bytes, uint256 _arg)\n        internal\n        pure\n        returns (uint256 length, uint256 offset)\n    {\n        uint256 relativeOffset;\n        assembly {\n            // The offset of the `_arg`-th element is `32 * arg`, which stores the offset of the length pointer.\n            // shl(5, x) is equivalent to mul(32, x)\n            let lengthPtr := add(_bytes.offset, calldataload(add(_bytes.offset, shl(5, _arg))))\n            length := calldataload(lengthPtr)\n            offset := add(lengthPtr, 0x20)\n            relativeOffset := sub(offset, _bytes.offset)\n        }\n        if (_bytes.length < length + relativeOffset) revert SliceOutOfBounds();\n    }\n\n    /// @notice Decode the `_arg`-th element in `_bytes` as `bytes`\n    /// @param _bytes The input bytes string to extract a bytes string from\n    /// @param _arg The index of the argument to extract\n    function toBytes(bytes calldata _bytes, uint256 _arg) internal pure returns (bytes calldata res) {\n        (uint256 length, uint256 offset) = toLengthOffset(_bytes, _arg);\n        assembly {\n            res.length := length\n            res.offset := offset\n        }\n    }\n\n    /// @notice Decode the `_arg`-th element in `_bytes` as `address[]`\n    /// @param _bytes The input bytes string to extract an address array from\n    /// @param _arg The index of the argument to extract\n    function toAddressArray(bytes calldata _bytes, uint256 _arg) internal pure returns (address[] calldata res) {\n        (uint256 length, uint256 offset) = toLengthOffset(_bytes, _arg);\n        assembly {\n            res.length := length\n            res.offset := offset\n        }\n    }\n\n    /// @notice Decode the `_arg`-th element in `_bytes` as `bytes[]`\n    /// @param _bytes The input bytes string to extract a bytes array from\n    /// @param _arg The index of the argument to extract\n    function toBytesArray(bytes calldata _bytes, uint256 _arg) internal pure returns (bytes[] calldata res) {\n        (uint256 length, uint256 offset) = toLengthOffset(_bytes, _arg);\n        assembly {\n            res.length := length\n            res.offset := offset\n        }\n    }\n}\n"},"contracts/modules/astra/cl/CLPath.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity >=0.6.0;\n\nimport {BytesLib} from './BytesLib.sol';\nimport {Constants} from '../../../libraries/Constants.sol';\n\n/// @title Functions for manipulating path data for multihop swaps\nlibrary CLPath {\n    using BytesLib for bytes;\n\n    /// @notice Returns true iff the path contains two or more pools\n    /// @param path The encoded swap path\n    /// @return True if path contains two or more pools, otherwise false\n    function hasMultiplePools(bytes calldata path) internal pure returns (bool) {\n        return path.length >= Constants.MULTIPLE_CL_POOLS_MIN_LENGTH;\n    }\n\n    /// @notice Decodes the first pool in path\n    /// @param path The bytes encoded swap path\n    /// @return tokenA The first token of the given pool\n    /// @return fee The fee level of the pool\n    /// @return tokenB The second token of the given pool\n    function decodeFirstPool(bytes calldata path) internal pure returns (address, uint24, address) {\n        return path.toPool();\n    }\n\n    /// @notice Gets the segment corresponding to the first pool in the path\n    /// @param path The bytes encoded swap path\n    /// @return The segment containing all data necessary to target the first pool in the path\n    function getFirstPool(bytes calldata path) internal pure returns (bytes calldata) {\n        return path[:Constants.CL_POP_OFFSET];\n    }\n\n    function decodeFirstToken(bytes calldata path) internal pure returns (address tokenA) {\n        tokenA = path.toAddress();\n    }\n\n    /// @notice Skips a token + fee element\n    /// @param path The swap path\n    function skipToken(bytes calldata path) internal pure returns (bytes calldata) {\n        return path[Constants.NEXT_CL_POOL_OFFSET:];\n    }\n}\n"},"contracts/modules/astra/cl/CLSwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {CLPath} from './CLPath.sol';\nimport {BytesLib} from './BytesLib.sol';\nimport {SafeCast} from '@airdao/astra-cl-core/contracts/libraries/SafeCast.sol';\nimport {IAstraCLPool} from '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\nimport {IAstraCLSwapCallback} from '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol';\nimport {Constants} from '../../../libraries/Constants.sol';\nimport {RouterImmutables} from '../../../base/RouterImmutables.sol';\nimport {Permit2Payments} from '../../Permit2Payments.sol';\nimport {Constants} from '../../../libraries/Constants.sol';\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\n\n/// @title Router for Astra CL Trades\nabstract contract CLSwapRouter is RouterImmutables, Permit2Payments, IAstraCLSwapCallback {\n    using CLPath for bytes;\n    using BytesLib for bytes;\n    using SafeCast for uint256;\n\n    error CLInvalidSwap();\n    error CLTooLittleReceived();\n    error CLTooMuchRequested();\n    error CLInvalidAmountOut();\n    error CLInvalidCaller();\n\n    /// @dev Used as the placeholder value for maxAmountIn, because the computed amount in for an exact output swap\n    /// can never actually be this value\n    uint256 private constant DEFAULT_MAX_AMOUNT_IN = type(uint256).max;\n\n    /// @dev Transient storage variable used for checking slippage\n    uint256 private maxAmountInCached = DEFAULT_MAX_AMOUNT_IN;\n\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\n\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\n\n    function astraCLSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes calldata data) external {\n        if (amount0Delta <= 0 && amount1Delta <= 0) revert CLInvalidSwap(); // swaps entirely within 0-liquidity regions are not supported\n        (, address payer) = abi.decode(data, (bytes, address));\n        bytes calldata path = data.toBytes(0);\n\n        // because exact output swaps are executed in reverse order, in this case tokenOut is actually tokenIn\n        (address tokenIn, uint24 fee, address tokenOut) = path.decodeFirstPool();\n\n        if (computePoolAddress(tokenIn, tokenOut, fee) != msg.sender) revert CLInvalidCaller();\n\n        (bool isExactInput, uint256 amountToPay) =\n            amount0Delta > 0 ? (tokenIn < tokenOut, uint256(amount0Delta)) : (tokenOut < tokenIn, uint256(amount1Delta));\n\n        if (isExactInput) {\n            // Pay the pool (msg.sender)\n            payOrPermit2Transfer(tokenIn, payer, msg.sender, amountToPay);\n        } else {\n            // either initiate the next swap or pay\n            if (path.hasMultiplePools()) {\n                // this is an intermediate step so the payer is actually this contract\n                path = path.skipToken();\n                _swap(-amountToPay.toInt256(), msg.sender, path, payer, false);\n            } else {\n                if (amountToPay > maxAmountInCached) revert CLTooMuchRequested();\n                // note that because exact output swaps are executed in reverse order, tokenOut is actually tokenIn\n                payOrPermit2Transfer(tokenOut, payer, msg.sender, amountToPay);\n            }\n        }\n    }\n\n    /// @notice Performs a Astra CL exact input swap\n    /// @param recipient The recipient of the output tokens\n    /// @param amountIn The amount of input tokens for the trade\n    /// @param amountOutMinimum The minimum desired amount of output tokens\n    /// @param path The path of the trade as a bytes string\n    /// @param payer The address that will be paying the input\n    function clSwapExactInput(\n        address recipient,\n        uint256 amountIn,\n        uint256 amountOutMinimum,\n        bytes calldata path,\n        address payer\n    ) internal {\n        // use amountIn == Constants.CONTRACT_BALANCE as a flag to swap the entire balance of the contract\n        if (amountIn == Constants.CONTRACT_BALANCE) {\n            address tokenIn = path.decodeFirstToken();\n            amountIn = ERC20(tokenIn).balanceOf(address(this));\n        }\n\n        uint256 amountOut;\n        while (true) {\n            bool hasMultiplePools = path.hasMultiplePools();\n\n            // the outputs of prior swaps become the inputs to subsequent ones\n            (int256 amount0Delta, int256 amount1Delta, bool zeroForOne) = _swap(\n                amountIn.toInt256(),\n                hasMultiplePools ? address(this) : recipient, // for intermediate swaps, this contract custodies\n                path.getFirstPool(), // only the first pool is needed\n                payer, // for intermediate swaps, this contract custodies\n                true\n            );\n\n            amountIn = uint256(-(zeroForOne ? amount1Delta : amount0Delta));\n\n            // decide whether to continue or terminate\n            if (hasMultiplePools) {\n                payer = address(this);\n                path = path.skipToken();\n            } else {\n                amountOut = amountIn;\n                break;\n            }\n        }\n\n        if (amountOut < amountOutMinimum) revert CLTooLittleReceived();\n    }\n\n    /// @notice Performs a Astra CL exact output swap\n    /// @param recipient The recipient of the output tokens\n    /// @param amountOut The amount of output tokens to receive for the trade\n    /// @param amountInMaximum The maximum desired amount of input tokens\n    /// @param path The path of the trade as a bytes string\n    /// @param payer The address that will be paying the input\n    function clSwapExactOutput(\n        address recipient,\n        uint256 amountOut,\n        uint256 amountInMaximum,\n        bytes calldata path,\n        address payer\n    ) internal {\n        maxAmountInCached = amountInMaximum;\n        (int256 amount0Delta, int256 amount1Delta, bool zeroForOne) =\n            _swap(-amountOut.toInt256(), recipient, path, payer, false);\n\n        uint256 amountOutReceived = zeroForOne ? uint256(-amount1Delta) : uint256(-amount0Delta);\n\n        if (amountOutReceived != amountOut) revert CLInvalidAmountOut();\n\n        maxAmountInCached = DEFAULT_MAX_AMOUNT_IN;\n    }\n\n    /// @dev Performs a single swap for both exactIn and exactOut\n    /// For exactIn, `amount` is `amountIn`. For exactOut, `amount` is `-amountOut`\n    function _swap(int256 amount, address recipient, bytes calldata path, address payer, bool isExactIn)\n        private\n        returns (int256 amount0Delta, int256 amount1Delta, bool zeroForOne)\n    {\n        (address tokenIn, uint24 fee, address tokenOut) = path.decodeFirstPool();\n\n        zeroForOne = isExactIn ? tokenIn < tokenOut : tokenOut < tokenIn;\n\n        (amount0Delta, amount1Delta) = IAstraCLPool(computePoolAddress(tokenIn, tokenOut, fee)).swap(\n            recipient,\n            zeroForOne,\n            amount,\n            (zeroForOne ? MIN_SQRT_RATIO + 1 : MAX_SQRT_RATIO - 1),\n            abi.encode(path, payer)\n        );\n    }\n\n    function computePoolAddress(address tokenA, address tokenB, uint24 fee) private view returns (address pool) {\n        if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);\n        pool = address(\n            uint160(\n                uint256(\n                    keccak256(\n                        abi.encodePacked(\n                            hex'ff',\n                            ASTRA_CL_FACTORY,\n                            keccak256(abi.encode(tokenA, tokenB, fee)),\n                            ASTRA_CL_POOL_INIT_CODE_HASH\n                        )\n                    )\n                )\n            )\n        );\n    }\n}\n"},"contracts/modules/astra/classic/AstraClassicLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity >=0.8.0;\n\nimport {IAstraPair} from '@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol';\n\n/// @title Astra Classic Helper Library\n/// @notice Calculates the recipient address for a command\nlibrary AstraClassicLibrary {\n    error InvalidReserves();\n    error InvalidPath();\n\n    /// @notice Calculates the classic address for a pair without making any external calls\n    /// @param factory The address of the classic factory\n    /// @param initCodeHash The hash of the pair initcode\n    /// @param tokenA One of the tokens in the pair\n    /// @param tokenB The other token in the pair\n    /// @return pair The resultant classic pair address\n    function pairFor(address factory, bytes32 initCodeHash, address tokenA, address tokenB)\n        internal\n        pure\n        returns (address pair)\n    {\n        (address token0, address token1) = sortTokens(tokenA, tokenB);\n        pair = pairForPreSorted(factory, initCodeHash, token0, token1);\n    }\n\n    /// @notice Calculates the classic address for a pair and the pair's token0\n    /// @param factory The address of the classic factory\n    /// @param initCodeHash The hash of the pair initcode\n    /// @param tokenA One of the tokens in the pair\n    /// @param tokenB The other token in the pair\n    /// @return pair The resultant classic pair address\n    /// @return token0 The token considered token0 in this pair\n    function pairAndToken0For(address factory, bytes32 initCodeHash, address tokenA, address tokenB)\n        internal\n        pure\n        returns (address pair, address token0)\n    {\n        address token1;\n        (token0, token1) = sortTokens(tokenA, tokenB);\n        pair = pairForPreSorted(factory, initCodeHash, token0, token1);\n    }\n\n    /// @notice Calculates the classic address for a pair assuming the input tokens are pre-sorted\n    /// @param factory The address of the classic factory\n    /// @param initCodeHash The hash of the pair initcode\n    /// @param token0 The pair's token0\n    /// @param token1 The pair's token1\n    /// @return pair The resultant classic pair address\n    function pairForPreSorted(address factory, bytes32 initCodeHash, address token0, address token1)\n        private\n        pure\n        returns (address pair)\n    {\n        pair = address(\n            uint160(\n                uint256(\n                    keccak256(\n                        abi.encodePacked(hex'ff', factory, keccak256(abi.encodePacked(token0, token1)), initCodeHash)\n                    )\n                )\n            )\n        );\n    }\n\n    /// @notice Calculates the classic address for a pair and fetches the reserves for each token\n    /// @param factory The address of the classic factory\n    /// @param initCodeHash The hash of the pair initcode\n    /// @param tokenA One of the tokens in the pair\n    /// @param tokenB The other token in the pair\n    /// @return pair The resultant classic pair address\n    /// @return reserveA The reserves for tokenA\n    /// @return reserveB The reserves for tokenB\n    function pairAndReservesFor(address factory, bytes32 initCodeHash, address tokenA, address tokenB)\n        private\n        view\n        returns (address pair, uint256 reserveA, uint256 reserveB)\n    {\n        address token0;\n        (pair, token0) = pairAndToken0For(factory, initCodeHash, tokenA, tokenB);\n        (uint256 reserve0, uint256 reserve1,) = IAstraPair(pair).getReserves();\n        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n    }\n\n    /// @notice Given an input asset amount returns the maximum output amount of the other asset\n    /// @param amountIn The token input amount\n    /// @param reserveIn The reserves available of the input token\n    /// @param reserveOut The reserves available of the output token\n    /// @return amountOut The output amount of the output token\n    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)\n        internal\n        pure\n        returns (uint256 amountOut)\n    {\n        if (reserveIn == 0 || reserveOut == 0) revert InvalidReserves();\n        uint256 amountInWithFee = amountIn * 997;\n        uint256 numerator = amountInWithFee * reserveOut;\n        uint256 denominator = reserveIn * 1000 + amountInWithFee;\n        amountOut = numerator / denominator;\n    }\n\n    /// @notice Returns the input amount needed for a desired output amount in a single-hop trade\n    /// @param amountOut The desired output amount\n    /// @param reserveIn The reserves available of the input token\n    /// @param reserveOut The reserves available of the output token\n    /// @return amountIn The input amount of the input token\n    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)\n        internal\n        pure\n        returns (uint256 amountIn)\n    {\n        if (reserveIn == 0 || reserveOut == 0) revert InvalidReserves();\n        uint256 numerator = reserveIn * amountOut * 1000;\n        uint256 denominator = (reserveOut - amountOut) * 997;\n        amountIn = (numerator / denominator) + 1;\n    }\n\n    /// @notice Returns the input amount needed for a desired output amount in a multi-hop trade\n    /// @param factory The address of the classic factory\n    /// @param initCodeHash The hash of the pair initcode\n    /// @param amountOut The desired output amount\n    /// @param path The path of the multi-hop trade\n    /// @return amount The input amount of the input token\n    /// @return pair The first pair in the trade\n    function getAmountInMultihop(address factory, bytes32 initCodeHash, uint256 amountOut, address[] memory path)\n        internal\n        view\n        returns (uint256 amount, address pair)\n    {\n        if (path.length < 2) revert InvalidPath();\n        amount = amountOut;\n        for (uint256 i = path.length - 1; i > 0; i--) {\n            uint256 reserveIn;\n            uint256 reserveOut;\n\n            (pair, reserveIn, reserveOut) = pairAndReservesFor(factory, initCodeHash, path[i - 1], path[i]);\n            amount = getAmountIn(amount, reserveIn, reserveOut);\n        }\n    }\n\n    /// @notice Sorts two tokens to return token0 and token1\n    /// @param tokenA The first token to sort\n    /// @param tokenB The other token to sort\n    /// @return token0 The smaller token by address value\n    /// @return token1 The larger token by address value\n    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\n        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n    }\n}\n"},"contracts/modules/astra/classic/ClassicSwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {IAstraPair} from '@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol';\nimport {AstraClassicLibrary} from './AstraClassicLibrary.sol';\nimport {RouterImmutables} from '../../../base/RouterImmutables.sol';\nimport {Payments} from '../../Payments.sol';\nimport {Permit2Payments} from '../../Permit2Payments.sol';\nimport {Constants} from '../../../libraries/Constants.sol';\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\n\n/// @title Router for Astra Classic Trades\nabstract contract ClassicSwapRouter is RouterImmutables, Permit2Payments {\n    error ClassicTooLittleReceived();\n    error ClassicTooMuchRequested();\n    error ClassicInvalidPath();\n\n    function _classicSwap(address[] calldata path, address recipient, address pair) private {\n        unchecked {\n            if (path.length < 2) revert ClassicInvalidPath();\n\n            // cached to save on duplicate operations\n            (address token0,) = AstraClassicLibrary.sortTokens(path[0], path[1]);\n            uint256 finalPairIndex = path.length - 1;\n            uint256 penultimatePairIndex = finalPairIndex - 1;\n            for (uint256 i; i < finalPairIndex; i++) {\n                (address input, address output) = (path[i], path[i + 1]);\n                (uint256 reserve0, uint256 reserve1,) = IAstraPair(pair).getReserves();\n                (uint256 reserveInput, uint256 reserveOutput) =\n                    input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n                uint256 amountInput = ERC20(input).balanceOf(pair) - reserveInput;\n                uint256 amountOutput = AstraClassicLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);\n                (uint256 amount0Out, uint256 amount1Out) =\n                    input == token0 ? (uint256(0), amountOutput) : (amountOutput, uint256(0));\n                address nextPair;\n                (nextPair, token0) = i < penultimatePairIndex\n                    ? AstraClassicLibrary.pairAndToken0For(\n                        ASTRA_CLASSIC_FACTORY, ASTRA_CLASSIC_PAIR_INIT_CODE_HASH, output, path[i + 2]\n                    )\n                    : (recipient, address(0));\n                IAstraPair(pair).swap(amount0Out, amount1Out, nextPair, new bytes(0));\n                pair = nextPair;\n            }\n        }\n    }\n\n    /// @notice Performs a Astra Classic exact input swap\n    /// @param recipient The recipient of the output tokens\n    /// @param amountIn The amount of input tokens for the trade\n    /// @param amountOutMinimum The minimum desired amount of output tokens\n    /// @param path The path of the trade as an array of token addresses\n    /// @param payer The address that will be paying the input\n    function classicSwapExactInput(\n        address recipient,\n        uint256 amountIn,\n        uint256 amountOutMinimum,\n        address[] calldata path,\n        address payer\n    ) internal {\n        address firstPair =\n            AstraClassicLibrary.pairFor(ASTRA_CLASSIC_FACTORY, ASTRA_CLASSIC_PAIR_INIT_CODE_HASH, path[0], path[1]);\n        if (\n            amountIn != Constants.ALREADY_PAID // amountIn of 0 to signal that the pair already has the tokens\n        ) {\n            payOrPermit2Transfer(path[0], payer, firstPair, amountIn);\n        }\n\n        ERC20 tokenOut = ERC20(path[path.length - 1]);\n        uint256 balanceBefore = tokenOut.balanceOf(recipient);\n\n        _classicSwap(path, recipient, firstPair);\n\n        uint256 amountOut = tokenOut.balanceOf(recipient) - balanceBefore;\n        if (amountOut < amountOutMinimum) revert ClassicTooLittleReceived();\n    }\n\n    /// @notice Performs a Astra Classic exact output swap\n    /// @param recipient The recipient of the output tokens\n    /// @param amountOut The amount of output tokens to receive for the trade\n    /// @param amountInMaximum The maximum desired amount of input tokens\n    /// @param path The path of the trade as an array of token addresses\n    /// @param payer The address that will be paying the input\n    function classicSwapExactOutput(\n        address recipient,\n        uint256 amountOut,\n        uint256 amountInMaximum,\n        address[] calldata path,\n        address payer\n    ) internal {\n        (uint256 amountIn, address firstPair) = AstraClassicLibrary.getAmountInMultihop(\n            ASTRA_CLASSIC_FACTORY, ASTRA_CLASSIC_PAIR_INIT_CODE_HASH, amountOut, path\n        );\n        if (amountIn > amountInMaximum) revert ClassicTooMuchRequested();\n\n        payOrPermit2Transfer(path[0], payer, firstPair, amountIn);\n        _classicSwap(path, recipient, firstPair);\n    }\n}\n"},"contracts/modules/Payments.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {Constants} from '../libraries/Constants.sol';\nimport {RouterImmutables} from '../base/RouterImmutables.sol';\nimport {SafeTransferLib} from 'solmate/src/utils/SafeTransferLib.sol';\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\nimport {ERC721} from 'solmate/src/tokens/ERC721.sol';\nimport {ERC1155} from 'solmate/src/tokens/ERC1155.sol';\n\n/// @title Payments contract\n/// @notice Performs various operations around the payment of ETH and tokens\nabstract contract Payments is RouterImmutables {\n    using SafeTransferLib for ERC20;\n    using SafeTransferLib for address;\n\n    error InsufficientToken();\n    error InsufficientAMB();\n    error InvalidBips();\n    error InvalidSpender();\n\n    uint256 internal constant FEE_BIPS_BASE = 10_000;\n\n    /// @notice Pays an amount of ETH or ERC20 to a recipient\n    /// @param token The token to pay (can be ETH using Constants.ETH)\n    /// @param recipient The address that will receive the payment\n    /// @param value The amount to pay\n    function pay(address token, address recipient, uint256 value) internal {\n        if (token == Constants.AMB) {\n            recipient.safeTransferETH(value);\n        } else {\n            if (value == Constants.CONTRACT_BALANCE) {\n                value = ERC20(token).balanceOf(address(this));\n            }\n\n            ERC20(token).safeTransfer(recipient, value);\n        }\n    }\n\n    /// @notice Approves a protocol to spend ERC20s in the router\n    /// @param token The token to approve\n    /// @param spender Which protocol to approve\n    function approveERC20(ERC20 token, Spenders spender) internal {\n        // check spender is one of our approved spenders\n        address spenderAddress;\n        /// @dev use 0 = Opensea Conduit for both Seaport v1.4 and v1.5\n        if (spender == Spenders.OSConduit) spenderAddress = OPENSEA_CONDUIT;\n        else if (spender == Spenders.Sudoswap) spenderAddress = SUDOSWAP;\n        else revert InvalidSpender();\n\n        // set approval\n        token.safeApprove(spenderAddress, type(uint256).max);\n    }\n\n    /// @notice Pays a proportion of the contract's AMB or ERC20 to a recipient\n    /// @param token The token to pay (can be AMB using Constants.AMB)\n    /// @param recipient The address that will receive payment\n    /// @param bips Portion in bips of whole balance of the contract\n    function payPortion(address token, address recipient, uint256 bips) internal {\n        if (bips == 0 || bips > FEE_BIPS_BASE) revert InvalidBips();\n        if (token == Constants.AMB) {\n            uint256 balance = address(this).balance;\n            uint256 amount = (balance * bips) / FEE_BIPS_BASE;\n            recipient.safeTransferETH(amount);\n        } else {\n            uint256 balance = ERC20(token).balanceOf(address(this));\n            uint256 amount = (balance * bips) / FEE_BIPS_BASE;\n            ERC20(token).safeTransfer(recipient, amount);\n        }\n    }\n\n    /// @notice Sweeps all of the contract's ERC20 or AMB to an address\n    /// @param token The token to sweep (can be AMB using Constants.AMB)\n    /// @param recipient The address that will receive payment\n    /// @param amountMinimum The minimum desired amount\n    function sweep(address token, address recipient, uint256 amountMinimum) internal {\n        uint256 balance;\n        if (token == Constants.AMB) {\n            balance = address(this).balance;\n            if (balance < amountMinimum) revert InsufficientAMB();\n            if (balance > 0) recipient.safeTransferETH(balance);\n        } else {\n            balance = ERC20(token).balanceOf(address(this));\n            if (balance < amountMinimum) revert InsufficientToken();\n            if (balance > 0) ERC20(token).safeTransfer(recipient, balance);\n        }\n    }\n\n    /// @notice Sweeps an ERC721 to a recipient from the contract\n    /// @param token The ERC721 token to sweep\n    /// @param recipient The address that will receive payment\n    /// @param id The ID of the ERC721 to sweep\n    function sweepERC721(address token, address recipient, uint256 id) internal {\n        ERC721(token).safeTransferFrom(address(this), recipient, id);\n    }\n\n    /// @notice Sweeps all of the contract's ERC1155 to an address\n    /// @param token The ERC1155 token to sweep\n    /// @param recipient The address that will receive payment\n    /// @param id The ID of the ERC1155 to sweep\n    /// @param amountMinimum The minimum desired amount\n    function sweepERC1155(address token, address recipient, uint256 id, uint256 amountMinimum) internal {\n        uint256 balance = ERC1155(token).balanceOf(address(this), id);\n        if (balance < amountMinimum) revert InsufficientToken();\n        ERC1155(token).safeTransferFrom(address(this), recipient, id, balance, bytes(''));\n    }\n\n    /// @notice Wraps an amount of AMB into SAMB\n    /// @param recipient The recipient of the SAMB\n    /// @param amount The amount to wrap (can be CONTRACT_BALANCE)\n    function wrapAMB(address recipient, uint256 amount) internal {\n        if (amount == Constants.CONTRACT_BALANCE) {\n            amount = address(this).balance;\n        } else if (amount > address(this).balance) {\n            revert InsufficientAMB();\n        }\n        if (amount > 0) {\n            SAMB.deposit{value: amount}();\n            if (recipient != address(this)) {\n                SAMB.transfer(recipient, amount);\n            }\n        }\n    }\n\n    /// @notice Unwraps all of the contract's SAMB into AMB\n    /// @param recipient The recipient of the AMB\n    /// @param amountMinimum The minimum amount of AMB desired\n    function unwrapSAMB(address recipient, uint256 amountMinimum) internal {\n        uint256 value = SAMB.balanceOf(address(this));\n        if (value < amountMinimum) {\n            revert InsufficientAMB();\n        }\n        if (value > 0) {\n            SAMB.withdraw(value);\n            if (recipient != address(this)) {\n                recipient.safeTransferETH(value);\n            }\n        }\n    }\n}\n"},"contracts/modules/Permit2Payments.sol":{"content":"pragma solidity ^0.8.17;\n\nimport {IAllowanceTransfer} from 'permit2/src/interfaces/IAllowanceTransfer.sol';\nimport {SafeCast160} from 'permit2/src/libraries/SafeCast160.sol';\nimport {Payments} from './Payments.sol';\nimport {Constants} from '../libraries/Constants.sol';\nimport {RouterImmutables} from '../base/RouterImmutables.sol';\n\n/// @title Payments through Permit2\n/// @notice Performs interactions with Permit2 to transfer tokens\nabstract contract Permit2Payments is Payments {\n    using SafeCast160 for uint256;\n\n    error FromAddressIsNotOwner();\n\n    /// @notice Performs a transferFrom on Permit2\n    /// @param token The token to transfer\n    /// @param from The address to transfer from\n    /// @param to The recipient of the transfer\n    /// @param amount The amount to transfer\n    function permit2TransferFrom(address token, address from, address to, uint160 amount) internal {\n        PERMIT2.transferFrom(from, to, amount, token);\n    }\n\n    /// @notice Performs a batch transferFrom on Permit2\n    /// @param batchDetails An array detailing each of the transfers that should occur\n    function permit2TransferFrom(IAllowanceTransfer.AllowanceTransferDetails[] memory batchDetails, address owner)\n        internal\n    {\n        uint256 batchLength = batchDetails.length;\n        for (uint256 i = 0; i < batchLength; ++i) {\n            if (batchDetails[i].from != owner) revert FromAddressIsNotOwner();\n        }\n        PERMIT2.transferFrom(batchDetails);\n    }\n\n    /// @notice Either performs a regular payment or transferFrom on Permit2, depending on the payer address\n    /// @param token The token to transfer\n    /// @param payer The address to pay for the transfer\n    /// @param recipient The recipient of the transfer\n    /// @param amount The amount to transfer\n    function payOrPermit2Transfer(address token, address payer, address recipient, uint256 amount) internal {\n        if (payer == address(this)) pay(token, recipient, amount);\n        else permit2TransferFrom(token, payer, recipient, amount.toUint160());\n    }\n}\n"},"contracts/test/ExampleModule.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\ncontract ExampleModule {\n    event ExampleModuleEvent(string message);\n\n    error CauseRevert();\n\n    function logEvent() public {\n        emit ExampleModuleEvent('testEvent');\n    }\n\n    function causeRevert() public pure {\n        revert CauseRevert();\n    }\n}\n"},"contracts/test/ImportsForTypechain.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\nimport {ERC1155} from 'solmate/src/tokens/ERC1155.sol';\nimport {Permit2} from 'permit2/src/Permit2.sol';\n\n// this contract only exists to pull ERC1155 and Permit2 into the hardhat build pipeline\n// so that typechain artifacts are generated for it\nabstract contract ImportsForTypechain is ERC1155, Permit2 {}\n"},"contracts/test/MintableERC20.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.15;\n\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\n\ncontract MintableERC20 is ERC20 {\n    constructor(string memory name, string memory symbol, uint256 amountToMint) ERC20(name, symbol, 18) {\n        mint(msg.sender, amountToMint);\n    }\n\n    function mint(address to, uint256 amount) public {\n        balanceOf[to] += amount;\n        totalSupply += amount;\n    }\n}\n"},"contracts/test/MockLooksRareRewardsDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.15;\n\nimport {ERC20} from 'solmate/src/tokens/ERC20.sol';\n\ncontract MockLooksRareRewardsDistributor {\n    address public immutable routerRewardsDistributor;\n    ERC20 immutable looksRareToken;\n\n    constructor(address _routerRewardsDistributor, address _looksRareToken) {\n        routerRewardsDistributor = _routerRewardsDistributor;\n        looksRareToken = ERC20(_looksRareToken);\n    }\n\n    fallback() external {\n        looksRareToken.transfer(routerRewardsDistributor, looksRareToken.balanceOf(address(this)));\n    }\n}\n"},"contracts/test/ReenteringProtocol.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.15;\n\ncontract ReenteringProtocol {\n    error NotAllowedReenter();\n\n    function callAndReenter(address universalRouter, bytes calldata data) public payable {\n        (bool success,) = universalRouter.call(data);\n        if (!success) revert NotAllowedReenter();\n    }\n}\n"},"contracts/test/TestCustomErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\ncontract TestCustomErrors {\n    // adding so that hardhat knows this custom signature selector for external contracts\n    error InvalidSignature();\n    error UnsafeCast();\n}\n"},"contracts/UniversalRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.17;\n\n// Command implementations\nimport {Dispatcher} from './base/Dispatcher.sol';\nimport {RewardsCollector} from './base/RewardsCollector.sol';\nimport {RouterParameters, RouterImmutables} from './base/RouterImmutables.sol';\nimport {Commands} from './libraries/Commands.sol';\nimport {IUniversalRouter} from './interfaces/IUniversalRouter.sol';\n\ncontract UniversalRouter is RouterImmutables, IUniversalRouter, Dispatcher, RewardsCollector {\n    modifier checkDeadline(uint256 deadline) {\n        if (block.timestamp > deadline) revert TransactionDeadlinePassed();\n        _;\n    }\n\n    constructor(RouterParameters memory params) RouterImmutables(params) {}\n\n    /// @inheritdoc IUniversalRouter\n    function execute(bytes calldata commands, bytes[] calldata inputs, uint256 deadline)\n        external\n        payable\n        checkDeadline(deadline)\n    {\n        execute(commands, inputs);\n    }\n\n    /// @inheritdoc Dispatcher\n    function execute(bytes calldata commands, bytes[] calldata inputs) public payable override isNotLocked {\n        bool success;\n        bytes memory output;\n        uint256 numCommands = commands.length;\n        if (inputs.length != numCommands) revert LengthMismatch();\n\n        // loop through all given commands, execute them and pass along outputs as defined\n        for (uint256 commandIndex = 0; commandIndex < numCommands;) {\n            bytes1 command = commands[commandIndex];\n\n            bytes calldata input = inputs[commandIndex];\n\n            (success, output) = dispatch(command, input);\n\n            if (!success && successRequired(command)) {\n                revert ExecutionFailed({commandIndex: commandIndex, message: output});\n            }\n\n            unchecked {\n                commandIndex++;\n            }\n        }\n    }\n\n    function successRequired(bytes1 command) internal pure returns (bool) {\n        return command & Commands.FLAG_ALLOW_REVERT == 0;\n    }\n\n    /// @notice To receive AMB from SAMB and NFT protocols\n    receive() external payable {}\n}\n"},"permit2/src/AllowanceTransfer.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.17;\n\nimport {ERC20} from \"solmate/src/tokens/ERC20.sol\";\nimport {SafeTransferLib} from \"solmate/src/utils/SafeTransferLib.sol\";\nimport {PermitHash} from \"./libraries/PermitHash.sol\";\nimport {SignatureVerification} from \"./libraries/SignatureVerification.sol\";\nimport {EIP712} from \"./EIP712.sol\";\nimport {IAllowanceTransfer} from \"../src/interfaces/IAllowanceTransfer.sol\";\nimport {SignatureExpired, InvalidNonce} from \"./PermitErrors.sol\";\nimport {Allowance} from \"./libraries/Allowance.sol\";\n\ncontract AllowanceTransfer is IAllowanceTransfer, EIP712 {\n    using SignatureVerification for bytes;\n    using SafeTransferLib for ERC20;\n    using PermitHash for PermitSingle;\n    using PermitHash for PermitBatch;\n    using Allowance for PackedAllowance;\n\n    /// @notice Maps users to tokens to spender addresses and information about the approval on the token\n    /// @dev Indexed in the order of token owner address, token address, spender address\n    /// @dev The stored word saves the allowed amount, expiration on the allowance, and nonce\n    mapping(address => mapping(address => mapping(address => PackedAllowance))) public allowance;\n\n    /// @inheritdoc IAllowanceTransfer\n    function approve(address token, address spender, uint160 amount, uint48 expiration) external {\n        PackedAllowance storage allowed = allowance[msg.sender][token][spender];\n        allowed.updateAmountAndExpiration(amount, expiration);\n        emit Approval(msg.sender, token, spender, amount, expiration);\n    }\n\n    /// @inheritdoc IAllowanceTransfer\n    function permit(address owner, PermitSingle memory permitSingle, bytes calldata signature) external {\n        if (block.timestamp > permitSingle.sigDeadline) revert SignatureExpired(permitSingle.sigDeadline);\n\n        // Verify the signer address from the signature.\n        signature.verify(_hashTypedData(permitSingle.hash()), owner);\n\n        _updateApproval(permitSingle.details, owner, permitSingle.spender);\n    }\n\n    /// @inheritdoc IAllowanceTransfer\n    function permit(address owner, PermitBatch memory permitBatch, bytes calldata signature) external {\n        if (block.timestamp > permitBatch.sigDeadline) revert SignatureExpired(permitBatch.sigDeadline);\n\n        // Verify the signer address from the signature.\n        signature.verify(_hashTypedData(permitBatch.hash()), owner);\n\n        address spender = permitBatch.spender;\n        unchecked {\n            uint256 length = permitBatch.details.length;\n            for (uint256 i = 0; i < length; ++i) {\n                _updateApproval(permitBatch.details[i], owner, spender);\n            }\n        }\n    }\n\n    /// @inheritdoc IAllowanceTransfer\n    function transferFrom(address from, address to, uint160 amount, address token) external {\n        _transfer(from, to, amount, token);\n    }\n\n    /// @inheritdoc IAllowanceTransfer\n    function transferFrom(AllowanceTransferDetails[] calldata transferDetails) external {\n        unchecked {\n            uint256 length = transferDetails.length;\n            for (uint256 i = 0; i < length; ++i) {\n                AllowanceTransferDetails memory transferDetail = transferDetails[i];\n                _transfer(transferDetail.from, transferDetail.to, transferDetail.amount, transferDetail.token);\n            }\n        }\n    }\n\n    /// @notice Internal function for transferring tokens using stored allowances\n    /// @dev Will fail if the allowed timeframe has passed\n    function _transfer(address from, address to, uint160 amount, address token) private {\n        PackedAllowance storage allowed = allowance[from][token][msg.sender];\n\n        if (block.timestamp > allowed.expiration) revert AllowanceExpired(allowed.expiration);\n\n        uint256 maxAmount = allowed.amount;\n        if (maxAmount != type(uint160).max) {\n            if (amount > maxAmount) {\n                revert InsufficientAllowance(maxAmount);\n            } else {\n                unchecked {\n                    allowed.amount = uint160(maxAmount) - amount;\n                }\n            }\n        }\n\n        // Transfer the tokens from the from address to the recipient.\n        ERC20(token).safeTransferFrom(from, to, amount);\n    }\n\n    /// @inheritdoc IAllowanceTransfer\n    function lockdown(TokenSpenderPair[] calldata approvals) external {\n        address owner = msg.sender;\n        // Revoke allowances for each pair of spenders and tokens.\n        unchecked {\n            uint256 length = approvals.length;\n            for (uint256 i = 0; i < length; ++i) {\n                address token = approvals[i].token;\n                address spender = approvals[i].spender;\n\n                allowance[owner][token][spender].amount = 0;\n                emit Lockdown(owner, token, spender);\n            }\n        }\n    }\n\n    /// @inheritdoc IAllowanceTransfer\n    function invalidateNonces(address token, address spender, uint48 newNonce) external {\n        uint48 oldNonce = allowance[msg.sender][token][spender].nonce;\n\n        if (newNonce <= oldNonce) revert InvalidNonce();\n\n        // Limit the amount of nonces that can be invalidated in one transaction.\n        unchecked {\n            uint48 delta = newNonce - oldNonce;\n            if (delta > type(uint16).max) revert ExcessiveInvalidation();\n        }\n\n        allowance[msg.sender][token][spender].nonce = newNonce;\n        emit NonceInvalidation(msg.sender, token, spender, newNonce, oldNonce);\n    }\n\n    /// @notice Sets the new values for amount, expiration, and nonce.\n    /// @dev Will check that the signed nonce is equal to the current nonce and then incrememnt the nonce value by 1.\n    /// @dev Emits a Permit event.\n    function _updateApproval(PermitDetails memory details, address owner, address spender) private {\n        uint48 nonce = details.nonce;\n        address token = details.token;\n        uint160 amount = details.amount;\n        uint48 expiration = details.expiration;\n        PackedAllowance storage allowed = allowance[owner][token][spender];\n\n        if (allowed.nonce != nonce) revert InvalidNonce();\n\n        allowed.updateAll(amount, expiration, nonce);\n        emit Permit(owner, token, spender, amount, expiration, nonce);\n    }\n}\n"},"permit2/src/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.17;\n\n/// @notice EIP712 helpers for permit2\n/// @dev Maintains cross-chain replay protection in the event of a fork\n/// @dev Reference: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol\ncontract EIP712 {\n    // Cache the domain separator as an immutable value, but also store the chain id that it\n    // corresponds to, in order to invalidate the cached domain separator if the chain id changes.\n    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n    uint256 private immutable _CACHED_CHAIN_ID;\n\n    bytes32 private constant _HASHED_NAME = keccak256(\"Permit2\");\n    bytes32 private constant _TYPE_HASH =\n        keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n    constructor() {\n        _CACHED_CHAIN_ID = block.chainid;\n        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME);\n    }\n\n    /// @notice Returns the domain separator for the current chain.\n    /// @dev Uses cached version if chainid and address are unchanged from construction.\n    function DOMAIN_SEPARATOR() public view returns (bytes32) {\n        return block.chainid == _CACHED_CHAIN_ID\n            ? _CACHED_DOMAIN_SEPARATOR\n            : _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME);\n    }\n\n    /// @notice Builds a domain separator using the current chainId and contract address.\n    function _buildDomainSeparator(bytes32 typeHash, bytes32 nameHash) private view returns (bytes32) {\n        return keccak256(abi.encode(typeHash, nameHash, block.chainid, address(this)));\n    }\n\n    /// @notice Creates an EIP-712 typed data hash\n    function _hashTypedData(bytes32 dataHash) internal view returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19\\x01\", DOMAIN_SEPARATOR(), dataHash));\n    }\n}\n"},"permit2/src/interfaces/IAllowanceTransfer.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\n/// @title AllowanceTransfer\n/// @notice Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts\n/// @dev Requires user's token approval on the Permit2 contract\ninterface IAllowanceTransfer {\n    /// @notice Thrown when an allowance on a token has expired.\n    /// @param deadline The timestamp at which the allowed amount is no longer valid\n    error AllowanceExpired(uint256 deadline);\n\n    /// @notice Thrown when an allowance on a token has been depleted.\n    /// @param amount The maximum amount allowed\n    error InsufficientAllowance(uint256 amount);\n\n    /// @notice Thrown when too many nonces are invalidated.\n    error ExcessiveInvalidation();\n\n    /// @notice Emits an event when the owner successfully invalidates an ordered nonce.\n    event NonceInvalidation(\n        address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce\n    );\n\n    /// @notice Emits an event when the owner successfully sets permissions on a token for the spender.\n    event Approval(\n        address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration\n    );\n\n    /// @notice Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\n    event Permit(\n        address indexed owner,\n        address indexed token,\n        address indexed spender,\n        uint160 amount,\n        uint48 expiration,\n        uint48 nonce\n    );\n\n    /// @notice Emits an event when the owner sets the allowance back to 0 with the lockdown function.\n    event Lockdown(address indexed owner, address token, address spender);\n\n    /// @notice The permit data for a token\n    struct PermitDetails {\n        // ERC20 token address\n        address token;\n        // the maximum amount allowed to spend\n        uint160 amount;\n        // timestamp at which a spender's token allowances become invalid\n        uint48 expiration;\n        // an incrementing value indexed per owner,token,and spender for each signature\n        uint48 nonce;\n    }\n\n    /// @notice The permit message signed for a single token allownce\n    struct PermitSingle {\n        // the permit data for a single token alownce\n        PermitDetails details;\n        // address permissioned on the allowed tokens\n        address spender;\n        // deadline on the permit signature\n        uint256 sigDeadline;\n    }\n\n    /// @notice The permit message signed for multiple token allowances\n    struct PermitBatch {\n        // the permit data for multiple token allowances\n        PermitDetails[] details;\n        // address permissioned on the allowed tokens\n        address spender;\n        // deadline on the permit signature\n        uint256 sigDeadline;\n    }\n\n    /// @notice The saved permissions\n    /// @dev This info is saved per owner, per token, per spender and all signed over in the permit message\n    /// @dev Setting amount to type(uint160).max sets an unlimited approval\n    struct PackedAllowance {\n        // amount allowed\n        uint160 amount;\n        // permission expiry\n        uint48 expiration;\n        // an incrementing value indexed per owner,token,and spender for each signature\n        uint48 nonce;\n    }\n\n    /// @notice A token spender pair.\n    struct TokenSpenderPair {\n        // the token the spender is approved\n        address token;\n        // the spender address\n        address spender;\n    }\n\n    /// @notice Details for a token transfer.\n    struct AllowanceTransferDetails {\n        // the owner of the token\n        address from;\n        // the recipient of the token\n        address to;\n        // the amount of the token\n        uint160 amount;\n        // the token to be transferred\n        address token;\n    }\n\n    /// @notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n    /// @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n    /// @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\n    function allowance(address, address, address) external view returns (uint160, uint48, uint48);\n\n    /// @notice Approves the spender to use up to amount of the specified token up until the expiration\n    /// @param token The token to approve\n    /// @param spender The spender address to approve\n    /// @param amount The approved amount of the token\n    /// @param expiration The timestamp at which the approval is no longer valid\n    /// @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n    /// @dev Setting amount to type(uint160).max sets an unlimited approval\n    function approve(address token, address spender, uint160 amount, uint48 expiration) external;\n\n    /// @notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n    /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n    /// @param owner The owner of the tokens being approved\n    /// @param permitSingle Data signed over by the owner specifying the terms of approval\n    /// @param signature The owner's signature over the permit data\n    function permit(address owner, PermitSingle memory permitSingle, bytes calldata signature) external;\n\n    /// @notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n    /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n    /// @param owner The owner of the tokens being approved\n    /// @param permitBatch Data signed over by the owner specifying the terms of approval\n    /// @param signature The owner's signature over the permit data\n    function permit(address owner, PermitBatch memory permitBatch, bytes calldata signature) external;\n\n    /// @notice Transfer approved tokens from one address to another\n    /// @param from The address to transfer from\n    /// @param to The address of the recipient\n    /// @param amount The amount of the token to transfer\n    /// @param token The token address to transfer\n    /// @dev Requires the from address to have approved at least the desired amount\n    /// of tokens to msg.sender.\n    function transferFrom(address from, address to, uint160 amount, address token) external;\n\n    /// @notice Transfer approved tokens in a batch\n    /// @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n    /// @dev Requires the from addresses to have approved at least the desired amount\n    /// of tokens to msg.sender.\n    function transferFrom(AllowanceTransferDetails[] calldata transferDetails) external;\n\n    /// @notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n    /// by batch revoking approvals\n    /// @param approvals Array of approvals to revoke.\n    function lockdown(TokenSpenderPair[] calldata approvals) external;\n\n    /// @notice Invalidate nonces for a given (token, spender) pair\n    /// @param token The token to invalidate nonces for\n    /// @param spender The spender to invalidate nonces for\n    /// @param newNonce The new nonce to set. Invalidates all nonces less than it.\n    /// @dev Can't invalidate more than 2**16 nonces per transaction.\n    function invalidateNonces(address token, address spender, uint48 newNonce) external;\n}\n"},"permit2/src/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\ninterface IERC1271 {\n    /// @dev Should return whether the signature provided is valid for the provided data\n    /// @param hash      Hash of the data to be signed\n    /// @param signature Signature byte array associated with _data\n    /// @return magicValue The bytes4 magic value 0x1626ba7e\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"permit2/src/interfaces/ISignatureTransfer.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\n/// @title SignatureTransfer\n/// @notice Handles ERC20 token transfers through signature based actions\n/// @dev Requires user's token approval on the Permit2 contract\ninterface ISignatureTransfer {\n    /// @notice Thrown when the requested amount for a transfer is larger than the permissioned amount\n    /// @param maxAmount The maximum amount a spender can request to transfer\n    error InvalidAmount(uint256 maxAmount);\n\n    /// @notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\n    /// @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\n    error LengthMismatch();\n\n    /// @notice Emits an event when the owner successfully invalidates an unordered nonce.\n    event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask);\n\n    /// @notice The token and amount details for a transfer signed in the permit transfer signature\n    struct TokenPermissions {\n        // ERC20 token address\n        address token;\n        // the maximum amount that can be spent\n        uint256 amount;\n    }\n\n    /// @notice The signed permit message for a single token transfer\n    struct PermitTransferFrom {\n        TokenPermissions permitted;\n        // a unique value for every token owner's signature to prevent signature replays\n        uint256 nonce;\n        // deadline on the permit signature\n        uint256 deadline;\n    }\n\n    /// @notice Specifies the recipient address and amount for batched transfers.\n    /// @dev Recipients and amounts correspond to the index of the signed token permissions array.\n    /// @dev Reverts if the requested amount is greater than the permitted signed amount.\n    struct SignatureTransferDetails {\n        // recipient address\n        address to;\n        // spender requested amount\n        uint256 requestedAmount;\n    }\n\n    /// @notice Used to reconstruct the signed permit message for multiple token transfers\n    /// @dev Do not need to pass in spender address as it is required that it is msg.sender\n    /// @dev Note that a user still signs over a spender address\n    struct PermitBatchTransferFrom {\n        // the tokens and corresponding amounts permitted for a transfer\n        TokenPermissions[] permitted;\n        // a unique value for every token owner's signature to prevent signature replays\n        uint256 nonce;\n        // deadline on the permit signature\n        uint256 deadline;\n    }\n\n    /// @notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\n    /// @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order\n    /// @dev The mapping is indexed first by the token owner, then by an index specified in the nonce\n    /// @dev It returns a uint256 bitmap\n    /// @dev The index, or wordPosition is capped at type(uint248).max\n    function nonceBitmap(address, uint256) external view returns (uint256);\n\n    /// @notice Transfers a token using a signed permit message\n    /// @dev Reverts if the requested amount is greater than the permitted signed amount\n    /// @param permit The permit data signed over by the owner\n    /// @param owner The owner of the tokens to transfer\n    /// @param transferDetails The spender's requested transfer details for the permitted token\n    /// @param signature The signature to verify\n    function permitTransferFrom(\n        PermitTransferFrom memory permit,\n        SignatureTransferDetails calldata transferDetails,\n        address owner,\n        bytes calldata signature\n    ) external;\n\n    /// @notice Transfers a token using a signed permit message\n    /// @notice Includes extra data provided by the caller to verify signature over\n    /// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n    /// @dev Reverts if the requested amount is greater than the permitted signed amount\n    /// @param permit The permit data signed over by the owner\n    /// @param owner The owner of the tokens to transfer\n    /// @param transferDetails The spender's requested transfer details for the permitted token\n    /// @param witness Extra data to include when checking the user signature\n    /// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n    /// @param signature The signature to verify\n    function permitWitnessTransferFrom(\n        PermitTransferFrom memory permit,\n        SignatureTransferDetails calldata transferDetails,\n        address owner,\n        bytes32 witness,\n        string calldata witnessTypeString,\n        bytes calldata signature\n    ) external;\n\n    /// @notice Transfers multiple tokens using a signed permit message\n    /// @param permit The permit data signed over by the owner\n    /// @param owner The owner of the tokens to transfer\n    /// @param transferDetails Specifies the recipient and requested amount for the token transfer\n    /// @param signature The signature to verify\n    function permitTransferFrom(\n        PermitBatchTransferFrom memory permit,\n        SignatureTransferDetails[] calldata transferDetails,\n        address owner,\n        bytes calldata signature\n    ) external;\n\n    /// @notice Transfers multiple tokens using a signed permit message\n    /// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n    /// @notice Includes extra data provided by the caller to verify signature over\n    /// @param permit The permit data signed over by the owner\n    /// @param owner The owner of the tokens to transfer\n    /// @param transferDetails Specifies the recipient and requested amount for the token transfer\n    /// @param witness Extra data to include when checking the user signature\n    /// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n    /// @param signature The signature to verify\n    function permitWitnessTransferFrom(\n        PermitBatchTransferFrom memory permit,\n        SignatureTransferDetails[] calldata transferDetails,\n        address owner,\n        bytes32 witness,\n        string calldata witnessTypeString,\n        bytes calldata signature\n    ) external;\n\n    /// @notice Invalidates the bits specified in mask for the bitmap at the word position\n    /// @dev The wordPos is maxed at type(uint248).max\n    /// @param wordPos A number to index the nonceBitmap at\n    /// @param mask A bitmap masked against msg.sender's current bitmap at the word position\n    function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external;\n}\n"},"permit2/src/libraries/Allowance.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport {IAllowanceTransfer} from \"../interfaces/IAllowanceTransfer.sol\";\n\nlibrary Allowance {\n    // note if the expiration passed is 0, then it the approval set to the block.timestamp\n    uint256 private constant BLOCK_TIMESTAMP_EXPIRATION = 0;\n\n    /// @notice Sets the allowed amount, expiry, and nonce of the spender's permissions on owner's token.\n    /// @dev Nonce is incremented.\n    /// @dev If the inputted expiration is 0, the stored expiration is set to block.timestamp\n    function updateAll(\n        IAllowanceTransfer.PackedAllowance storage allowed,\n        uint160 amount,\n        uint48 expiration,\n        uint48 nonce\n    ) internal {\n        uint48 storedNonce;\n        unchecked {\n            storedNonce = nonce + 1;\n        }\n\n        uint48 storedExpiration = expiration == BLOCK_TIMESTAMP_EXPIRATION ? uint48(block.timestamp) : expiration;\n\n        uint256 word = pack(amount, storedExpiration, storedNonce);\n        assembly {\n            sstore(allowed.slot, word)\n        }\n    }\n\n    /// @notice Sets the allowed amount and expiry of the spender's permissions on owner's token.\n    /// @dev Nonce does not need to be incremented.\n    function updateAmountAndExpiration(\n        IAllowanceTransfer.PackedAllowance storage allowed,\n        uint160 amount,\n        uint48 expiration\n    ) internal {\n        // If the inputted expiration is 0, the allowance only lasts the duration of the block.\n        allowed.expiration = expiration == 0 ? uint48(block.timestamp) : expiration;\n        allowed.amount = amount;\n    }\n\n    /// @notice Computes the packed slot of the amount, expiration, and nonce that make up PackedAllowance\n    function pack(uint160 amount, uint48 expiration, uint48 nonce) internal pure returns (uint256 word) {\n        word = (uint256(nonce) << 208) | uint256(expiration) << 160 | amount;\n    }\n}\n"},"permit2/src/libraries/PermitHash.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport {IAllowanceTransfer} from \"../interfaces/IAllowanceTransfer.sol\";\nimport {ISignatureTransfer} from \"../interfaces/ISignatureTransfer.sol\";\n\nlibrary PermitHash {\n    bytes32 public constant _PERMIT_DETAILS_TYPEHASH =\n        keccak256(\"PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\");\n\n    bytes32 public constant _PERMIT_SINGLE_TYPEHASH = keccak256(\n        \"PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\"\n    );\n\n    bytes32 public constant _PERMIT_BATCH_TYPEHASH = keccak256(\n        \"PermitBatch(PermitDetails[] details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\"\n    );\n\n    bytes32 public constant _TOKEN_PERMISSIONS_TYPEHASH = keccak256(\"TokenPermissions(address token,uint256 amount)\");\n\n    bytes32 public constant _PERMIT_TRANSFER_FROM_TYPEHASH = keccak256(\n        \"PermitTransferFrom(TokenPermissions permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)\"\n    );\n\n    bytes32 public constant _PERMIT_BATCH_TRANSFER_FROM_TYPEHASH = keccak256(\n        \"PermitBatchTransferFrom(TokenPermissions[] permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)\"\n    );\n\n    string public constant _TOKEN_PERMISSIONS_TYPESTRING = \"TokenPermissions(address token,uint256 amount)\";\n\n    string public constant _PERMIT_TRANSFER_FROM_WITNESS_TYPEHASH_STUB =\n        \"PermitWitnessTransferFrom(TokenPermissions permitted,address spender,uint256 nonce,uint256 deadline,\";\n\n    string public constant _PERMIT_BATCH_WITNESS_TRANSFER_FROM_TYPEHASH_STUB =\n        \"PermitBatchWitnessTransferFrom(TokenPermissions[] permitted,address spender,uint256 nonce,uint256 deadline,\";\n\n    function hash(IAllowanceTransfer.PermitSingle memory permitSingle) internal pure returns (bytes32) {\n        bytes32 permitHash = _hashPermitDetails(permitSingle.details);\n        return\n            keccak256(abi.encode(_PERMIT_SINGLE_TYPEHASH, permitHash, permitSingle.spender, permitSingle.sigDeadline));\n    }\n\n    function hash(IAllowanceTransfer.PermitBatch memory permitBatch) internal pure returns (bytes32) {\n        uint256 numPermits = permitBatch.details.length;\n        bytes32[] memory permitHashes = new bytes32[](numPermits);\n        for (uint256 i = 0; i < numPermits; ++i) {\n            permitHashes[i] = _hashPermitDetails(permitBatch.details[i]);\n        }\n        return keccak256(\n            abi.encode(\n                _PERMIT_BATCH_TYPEHASH,\n                keccak256(abi.encodePacked(permitHashes)),\n                permitBatch.spender,\n                permitBatch.sigDeadline\n            )\n        );\n    }\n\n    function hash(ISignatureTransfer.PermitTransferFrom memory permit) internal view returns (bytes32) {\n        bytes32 tokenPermissionsHash = _hashTokenPermissions(permit.permitted);\n        return keccak256(\n            abi.encode(_PERMIT_TRANSFER_FROM_TYPEHASH, tokenPermissionsHash, msg.sender, permit.nonce, permit.deadline)\n        );\n    }\n\n    function hash(ISignatureTransfer.PermitBatchTransferFrom memory permit) internal view returns (bytes32) {\n        uint256 numPermitted = permit.permitted.length;\n        bytes32[] memory tokenPermissionHashes = new bytes32[](numPermitted);\n\n        for (uint256 i = 0; i < numPermitted; ++i) {\n            tokenPermissionHashes[i] = _hashTokenPermissions(permit.permitted[i]);\n        }\n\n        return keccak256(\n            abi.encode(\n                _PERMIT_BATCH_TRANSFER_FROM_TYPEHASH,\n                keccak256(abi.encodePacked(tokenPermissionHashes)),\n                msg.sender,\n                permit.nonce,\n                permit.deadline\n            )\n        );\n    }\n\n    function hashWithWitness(\n        ISignatureTransfer.PermitTransferFrom memory permit,\n        bytes32 witness,\n        string calldata witnessTypeString\n    ) internal view returns (bytes32) {\n        bytes32 typeHash = keccak256(abi.encodePacked(_PERMIT_TRANSFER_FROM_WITNESS_TYPEHASH_STUB, witnessTypeString));\n\n        bytes32 tokenPermissionsHash = _hashTokenPermissions(permit.permitted);\n        return keccak256(abi.encode(typeHash, tokenPermissionsHash, msg.sender, permit.nonce, permit.deadline, witness));\n    }\n\n    function hashWithWitness(\n        ISignatureTransfer.PermitBatchTransferFrom memory permit,\n        bytes32 witness,\n        string calldata witnessTypeString\n    ) internal view returns (bytes32) {\n        bytes32 typeHash =\n            keccak256(abi.encodePacked(_PERMIT_BATCH_WITNESS_TRANSFER_FROM_TYPEHASH_STUB, witnessTypeString));\n\n        uint256 numPermitted = permit.permitted.length;\n        bytes32[] memory tokenPermissionHashes = new bytes32[](numPermitted);\n\n        for (uint256 i = 0; i < numPermitted; ++i) {\n            tokenPermissionHashes[i] = _hashTokenPermissions(permit.permitted[i]);\n        }\n\n        return keccak256(\n            abi.encode(\n                typeHash,\n                keccak256(abi.encodePacked(tokenPermissionHashes)),\n                msg.sender,\n                permit.nonce,\n                permit.deadline,\n                witness\n            )\n        );\n    }\n\n    function _hashPermitDetails(IAllowanceTransfer.PermitDetails memory details) private pure returns (bytes32) {\n        return keccak256(abi.encode(_PERMIT_DETAILS_TYPEHASH, details));\n    }\n\n    function _hashTokenPermissions(ISignatureTransfer.TokenPermissions memory permitted)\n        private\n        pure\n        returns (bytes32)\n    {\n        return keccak256(abi.encode(_TOKEN_PERMISSIONS_TYPEHASH, permitted));\n    }\n}\n"},"permit2/src/libraries/SafeCast160.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nlibrary SafeCast160 {\n    /// @notice Thrown when a valude greater than type(uint160).max is cast to uint160\n    error UnsafeCast();\n\n    /// @notice Safely casts uint256 to uint160\n    /// @param value The uint256 to be cast\n    function toUint160(uint256 value) internal pure returns (uint160) {\n        if (value > type(uint160).max) revert UnsafeCast();\n        return uint160(value);\n    }\n}\n"},"permit2/src/libraries/SignatureVerification.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport {IERC1271} from \"../interfaces/IERC1271.sol\";\n\nlibrary SignatureVerification {\n    /// @notice Thrown when the passed in signature is not a valid length\n    error InvalidSignatureLength();\n\n    /// @notice Thrown when the recovered signer is equal to the zero address\n    error InvalidSignature();\n\n    /// @notice Thrown when the recovered signer does not equal the claimedSigner\n    error InvalidSigner();\n\n    /// @notice Thrown when the recovered contract signature is incorrect\n    error InvalidContractSignature();\n\n    bytes32 constant UPPER_BIT_MASK = (0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n\n    function verify(bytes calldata signature, bytes32 hash, address claimedSigner) internal view {\n        bytes32 r;\n        bytes32 s;\n        uint8 v;\n\n        if (claimedSigner.code.length == 0) {\n            if (signature.length == 65) {\n                (r, s) = abi.decode(signature, (bytes32, bytes32));\n                v = uint8(signature[64]);\n            } else if (signature.length == 64) {\n                // EIP-2098\n                bytes32 vs;\n                (r, vs) = abi.decode(signature, (bytes32, bytes32));\n                s = vs & UPPER_BIT_MASK;\n                v = uint8(uint256(vs >> 255)) + 27;\n            } else {\n                revert InvalidSignatureLength();\n            }\n            address signer = ecrecover(hash, v, r, s);\n            if (signer == address(0)) revert InvalidSignature();\n            if (signer != claimedSigner) revert InvalidSigner();\n        } else {\n            bytes4 magicValue = IERC1271(claimedSigner).isValidSignature(hash, signature);\n            if (magicValue != IERC1271.isValidSignature.selector) revert InvalidContractSignature();\n        }\n    }\n}\n"},"permit2/src/Permit2.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.17;\n\nimport {SignatureTransfer} from \"./SignatureTransfer.sol\";\nimport {AllowanceTransfer} from \"./AllowanceTransfer.sol\";\n\n/// @notice Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.\n/// @dev Users must approve Permit2 before calling any of the transfer functions.\ncontract Permit2 is SignatureTransfer, AllowanceTransfer {\n// Permit2 unifies the two contracts so users have maximal flexibility with their approval.\n}\n"},"permit2/src/PermitErrors.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.17;\n\n/// @notice Shared errors between signature based transfers and allowance based transfers.\n\n/// @notice Thrown when validating an inputted signature that is stale\n/// @param signatureDeadline The timestamp at which a signature is no longer valid\nerror SignatureExpired(uint256 signatureDeadline);\n\n/// @notice Thrown when validating that the inputted nonce has not been used\nerror InvalidNonce();\n"},"permit2/src/SignatureTransfer.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.17;\n\nimport {ISignatureTransfer} from \"./interfaces/ISignatureTransfer.sol\";\nimport {SignatureExpired, InvalidNonce} from \"./PermitErrors.sol\";\nimport {ERC20} from \"solmate/src/tokens/ERC20.sol\";\nimport {SafeTransferLib} from \"solmate/src/utils/SafeTransferLib.sol\";\nimport {SignatureVerification} from \"./libraries/SignatureVerification.sol\";\nimport {PermitHash} from \"./libraries/PermitHash.sol\";\nimport {EIP712} from \"./EIP712.sol\";\n\ncontract SignatureTransfer is ISignatureTransfer, EIP712 {\n    using SignatureVerification for bytes;\n    using SafeTransferLib for ERC20;\n    using PermitHash for PermitTransferFrom;\n    using PermitHash for PermitBatchTransferFrom;\n\n    /// @inheritdoc ISignatureTransfer\n    mapping(address => mapping(uint256 => uint256)) public nonceBitmap;\n\n    /// @inheritdoc ISignatureTransfer\n    function permitTransferFrom(\n        PermitTransferFrom memory permit,\n        SignatureTransferDetails calldata transferDetails,\n        address owner,\n        bytes calldata signature\n    ) external {\n        _permitTransferFrom(permit, transferDetails, owner, permit.hash(), signature);\n    }\n\n    /// @inheritdoc ISignatureTransfer\n    function permitWitnessTransferFrom(\n        PermitTransferFrom memory permit,\n        SignatureTransferDetails calldata transferDetails,\n        address owner,\n        bytes32 witness,\n        string calldata witnessTypeString,\n        bytes calldata signature\n    ) external {\n        _permitTransferFrom(\n            permit, transferDetails, owner, permit.hashWithWitness(witness, witnessTypeString), signature\n        );\n    }\n\n    /// @notice Transfers a token using a signed permit message.\n    /// @param permit The permit data signed over by the owner\n    /// @param dataHash The EIP-712 hash of permit data to include when checking signature\n    /// @param owner The owner of the tokens to transfer\n    /// @param transferDetails The spender's requested transfer details for the permitted token\n    /// @param signature The signature to verify\n    function _permitTransferFrom(\n        PermitTransferFrom memory permit,\n        SignatureTransferDetails calldata transferDetails,\n        address owner,\n        bytes32 dataHash,\n        bytes calldata signature\n    ) private {\n        uint256 requestedAmount = transferDetails.requestedAmount;\n\n        if (block.timestamp > permit.deadline) revert SignatureExpired(permit.deadline);\n        if (requestedAmount > permit.permitted.amount) revert InvalidAmount(permit.permitted.amount);\n\n        _useUnorderedNonce(owner, permit.nonce);\n\n        signature.verify(_hashTypedData(dataHash), owner);\n\n        ERC20(permit.permitted.token).safeTransferFrom(owner, transferDetails.to, requestedAmount);\n    }\n\n    /// @inheritdoc ISignatureTransfer\n    function permitTransferFrom(\n        PermitBatchTransferFrom memory permit,\n        SignatureTransferDetails[] calldata transferDetails,\n        address owner,\n        bytes calldata signature\n    ) external {\n        _permitTransferFrom(permit, transferDetails, owner, permit.hash(), signature);\n    }\n\n    /// @inheritdoc ISignatureTransfer\n    function permitWitnessTransferFrom(\n        PermitBatchTransferFrom memory permit,\n        SignatureTransferDetails[] calldata transferDetails,\n        address owner,\n        bytes32 witness,\n        string calldata witnessTypeString,\n        bytes calldata signature\n    ) external {\n        _permitTransferFrom(\n            permit, transferDetails, owner, permit.hashWithWitness(witness, witnessTypeString), signature\n        );\n    }\n\n    /// @notice Transfers tokens using a signed permit messages\n    /// @param permit The permit data signed over by the owner\n    /// @param dataHash The EIP-712 hash of permit data to include when checking signature\n    /// @param owner The owner of the tokens to transfer\n    /// @param signature The signature to verify\n    function _permitTransferFrom(\n        PermitBatchTransferFrom memory permit,\n        SignatureTransferDetails[] calldata transferDetails,\n        address owner,\n        bytes32 dataHash,\n        bytes calldata signature\n    ) private {\n        uint256 numPermitted = permit.permitted.length;\n\n        if (block.timestamp > permit.deadline) revert SignatureExpired(permit.deadline);\n        if (numPermitted != transferDetails.length) revert LengthMismatch();\n\n        _useUnorderedNonce(owner, permit.nonce);\n        signature.verify(_hashTypedData(dataHash), owner);\n\n        unchecked {\n            for (uint256 i = 0; i < numPermitted; ++i) {\n                TokenPermissions memory permitted = permit.permitted[i];\n                uint256 requestedAmount = transferDetails[i].requestedAmount;\n\n                if (requestedAmount > permitted.amount) revert InvalidAmount(permitted.amount);\n\n                if (requestedAmount != 0) {\n                    // allow spender to specify which of the permitted tokens should be transferred\n                    ERC20(permitted.token).safeTransferFrom(owner, transferDetails[i].to, requestedAmount);\n                }\n            }\n        }\n    }\n\n    /// @inheritdoc ISignatureTransfer\n    function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external {\n        nonceBitmap[msg.sender][wordPos] |= mask;\n\n        emit UnorderedNonceInvalidation(msg.sender, wordPos, mask);\n    }\n\n    /// @notice Returns the index of the bitmap and the bit position within the bitmap. Used for unordered nonces\n    /// @param nonce The nonce to get the associated word and bit positions\n    /// @return wordPos The word position or index into the nonceBitmap\n    /// @return bitPos The bit position\n    /// @dev The first 248 bits of the nonce value is the index of the desired bitmap\n    /// @dev The last 8 bits of the nonce value is the position of the bit in the bitmap\n    function bitmapPositions(uint256 nonce) private pure returns (uint256 wordPos, uint256 bitPos) {\n        wordPos = uint248(nonce >> 8);\n        bitPos = uint8(nonce);\n    }\n\n    /// @notice Checks whether a nonce is taken and sets the bit at the bit position in the bitmap at the word position\n    /// @param from The address to use the nonce at\n    /// @param nonce The nonce to spend\n    function _useUnorderedNonce(address from, uint256 nonce) internal {\n        (uint256 wordPos, uint256 bitPos) = bitmapPositions(nonce);\n        uint256 bit = 1 << bitPos;\n        uint256 flipped = nonceBitmap[from][wordPos] ^= bit;\n\n        if (flipped & bit == 0) revert InvalidNonce();\n    }\n}\n"},"solmate/src/tokens/ERC1155.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity >=0.8.0;\n\n/// @notice Minimalist and gas efficient standard ERC1155 implementation.\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)\nabstract contract ERC1155 {\n    /*//////////////////////////////////////////////////////////////\n                                 EVENTS\n    //////////////////////////////////////////////////////////////*/\n\n    event TransferSingle(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256 id,\n        uint256 amount\n    );\n\n    event TransferBatch(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256[] ids,\n        uint256[] amounts\n    );\n\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    event URI(string value, uint256 indexed id);\n\n    /*//////////////////////////////////////////////////////////////\n                             ERC1155 STORAGE\n    //////////////////////////////////////////////////////////////*/\n\n    mapping(address => mapping(uint256 => uint256)) public balanceOf;\n\n    mapping(address => mapping(address => bool)) public isApprovedForAll;\n\n    /*//////////////////////////////////////////////////////////////\n                             METADATA LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function uri(uint256 id) public view virtual returns (string memory);\n\n    /*//////////////////////////////////////////////////////////////\n                              ERC1155 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function setApprovalForAll(address operator, bool approved) public virtual {\n        isApprovedForAll[msg.sender][operator] = approved;\n\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes calldata data\n    ) public virtual {\n        require(msg.sender == from || isApprovedForAll[from][msg.sender], \"NOT_AUTHORIZED\");\n\n        balanceOf[from][id] -= amount;\n        balanceOf[to][id] += amount;\n\n        emit TransferSingle(msg.sender, from, to, id, amount);\n\n        require(\n            to.code.length == 0\n                ? to != address(0)\n                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==\n                    ERC1155TokenReceiver.onERC1155Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata amounts,\n        bytes calldata data\n    ) public virtual {\n        require(ids.length == amounts.length, \"LENGTH_MISMATCH\");\n\n        require(msg.sender == from || isApprovedForAll[from][msg.sender], \"NOT_AUTHORIZED\");\n\n        // Storing these outside the loop saves ~15 gas per iteration.\n        uint256 id;\n        uint256 amount;\n\n        for (uint256 i = 0; i < ids.length; ) {\n            id = ids[i];\n            amount = amounts[i];\n\n            balanceOf[from][id] -= amount;\n            balanceOf[to][id] += amount;\n\n            // An array can't have a total length\n            // larger than the max uint256 value.\n            unchecked {\n                ++i;\n            }\n        }\n\n        emit TransferBatch(msg.sender, from, to, ids, amounts);\n\n        require(\n            to.code.length == 0\n                ? to != address(0)\n                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==\n                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)\n        public\n        view\n        virtual\n        returns (uint256[] memory balances)\n    {\n        require(owners.length == ids.length, \"LENGTH_MISMATCH\");\n\n        balances = new uint256[](owners.length);\n\n        // Unchecked because the only math done is incrementing\n        // the array index counter which cannot possibly overflow.\n        unchecked {\n            for (uint256 i = 0; i < owners.length; ++i) {\n                balances[i] = balanceOf[owners[i]][ids[i]];\n            }\n        }\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                              ERC165 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return\n            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\n            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155\n            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                        INTERNAL MINT/BURN LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function _mint(\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) internal virtual {\n        balanceOf[to][id] += amount;\n\n        emit TransferSingle(msg.sender, address(0), to, id, amount);\n\n        require(\n            to.code.length == 0\n                ? to != address(0)\n                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==\n                    ERC1155TokenReceiver.onERC1155Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function _batchMint(\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) internal virtual {\n        uint256 idsLength = ids.length; // Saves MLOADs.\n\n        require(idsLength == amounts.length, \"LENGTH_MISMATCH\");\n\n        for (uint256 i = 0; i < idsLength; ) {\n            balanceOf[to][ids[i]] += amounts[i];\n\n            // An array can't have a total length\n            // larger than the max uint256 value.\n            unchecked {\n                ++i;\n            }\n        }\n\n        emit TransferBatch(msg.sender, address(0), to, ids, amounts);\n\n        require(\n            to.code.length == 0\n                ? to != address(0)\n                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==\n                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function _batchBurn(\n        address from,\n        uint256[] memory ids,\n        uint256[] memory amounts\n    ) internal virtual {\n        uint256 idsLength = ids.length; // Saves MLOADs.\n\n        require(idsLength == amounts.length, \"LENGTH_MISMATCH\");\n\n        for (uint256 i = 0; i < idsLength; ) {\n            balanceOf[from][ids[i]] -= amounts[i];\n\n            // An array can't have a total length\n            // larger than the max uint256 value.\n            unchecked {\n                ++i;\n            }\n        }\n\n        emit TransferBatch(msg.sender, from, address(0), ids, amounts);\n    }\n\n    function _burn(\n        address from,\n        uint256 id,\n        uint256 amount\n    ) internal virtual {\n        balanceOf[from][id] -= amount;\n\n        emit TransferSingle(msg.sender, from, address(0), id, amount);\n    }\n}\n\n/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)\nabstract contract ERC1155TokenReceiver {\n    function onERC1155Received(\n        address,\n        address,\n        uint256,\n        uint256,\n        bytes calldata\n    ) external virtual returns (bytes4) {\n        return ERC1155TokenReceiver.onERC1155Received.selector;\n    }\n\n    function onERC1155BatchReceived(\n        address,\n        address,\n        uint256[] calldata,\n        uint256[] calldata,\n        bytes calldata\n    ) external virtual returns (bytes4) {\n        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;\n    }\n}\n"},"solmate/src/tokens/ERC20.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity >=0.8.0;\n\n/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)\n/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)\n/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.\nabstract contract ERC20 {\n    /*//////////////////////////////////////////////////////////////\n                                 EVENTS\n    //////////////////////////////////////////////////////////////*/\n\n    event Transfer(address indexed from, address indexed to, uint256 amount);\n\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\n\n    /*//////////////////////////////////////////////////////////////\n                            METADATA STORAGE\n    //////////////////////////////////////////////////////////////*/\n\n    string public name;\n\n    string public symbol;\n\n    uint8 public immutable decimals;\n\n    /*//////////////////////////////////////////////////////////////\n                              ERC20 STORAGE\n    //////////////////////////////////////////////////////////////*/\n\n    uint256 public totalSupply;\n\n    mapping(address => uint256) public balanceOf;\n\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    /*//////////////////////////////////////////////////////////////\n                            EIP-2612 STORAGE\n    //////////////////////////////////////////////////////////////*/\n\n    uint256 internal immutable INITIAL_CHAIN_ID;\n\n    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;\n\n    mapping(address => uint256) public nonces;\n\n    /*//////////////////////////////////////////////////////////////\n                               CONSTRUCTOR\n    //////////////////////////////////////////////////////////////*/\n\n    constructor(\n        string memory _name,\n        string memory _symbol,\n        uint8 _decimals\n    ) {\n        name = _name;\n        symbol = _symbol;\n        decimals = _decimals;\n\n        INITIAL_CHAIN_ID = block.chainid;\n        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                               ERC20 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function approve(address spender, uint256 amount) public virtual returns (bool) {\n        allowance[msg.sender][spender] = amount;\n\n        emit Approval(msg.sender, spender, amount);\n\n        return true;\n    }\n\n    function transfer(address to, uint256 amount) public virtual returns (bool) {\n        balanceOf[msg.sender] -= amount;\n\n        // Cannot overflow because the sum of all user\n        // balances can't exceed the max uint256 value.\n        unchecked {\n            balanceOf[to] += amount;\n        }\n\n        emit Transfer(msg.sender, to, amount);\n\n        return true;\n    }\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) public virtual returns (bool) {\n        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.\n\n        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;\n\n        balanceOf[from] -= amount;\n\n        // Cannot overflow because the sum of all user\n        // balances can't exceed the max uint256 value.\n        unchecked {\n            balanceOf[to] += amount;\n        }\n\n        emit Transfer(from, to, amount);\n\n        return true;\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                             EIP-2612 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) public virtual {\n        require(deadline >= block.timestamp, \"PERMIT_DEADLINE_EXPIRED\");\n\n        // Unchecked because the only math done is incrementing\n        // the owner's nonce which cannot realistically overflow.\n        unchecked {\n            address recoveredAddress = ecrecover(\n                keccak256(\n                    abi.encodePacked(\n                        \"\\x19\\x01\",\n                        DOMAIN_SEPARATOR(),\n                        keccak256(\n                            abi.encode(\n                                keccak256(\n                                    \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"\n                                ),\n                                owner,\n                                spender,\n                                value,\n                                nonces[owner]++,\n                                deadline\n                            )\n                        )\n                    )\n                ),\n                v,\n                r,\n                s\n            );\n\n            require(recoveredAddress != address(0) && recoveredAddress == owner, \"INVALID_SIGNER\");\n\n            allowance[recoveredAddress][spender] = value;\n        }\n\n        emit Approval(owner, spender, value);\n    }\n\n    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {\n        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();\n    }\n\n    function computeDomainSeparator() internal view virtual returns (bytes32) {\n        return\n            keccak256(\n                abi.encode(\n                    keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n                    keccak256(bytes(name)),\n                    keccak256(\"1\"),\n                    block.chainid,\n                    address(this)\n                )\n            );\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                        INTERNAL MINT/BURN LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function _mint(address to, uint256 amount) internal virtual {\n        totalSupply += amount;\n\n        // Cannot overflow because the sum of all user\n        // balances can't exceed the max uint256 value.\n        unchecked {\n            balanceOf[to] += amount;\n        }\n\n        emit Transfer(address(0), to, amount);\n    }\n\n    function _burn(address from, uint256 amount) internal virtual {\n        balanceOf[from] -= amount;\n\n        // Cannot underflow because a user's balance\n        // will never be larger than the total supply.\n        unchecked {\n            totalSupply -= amount;\n        }\n\n        emit Transfer(from, address(0), amount);\n    }\n}\n"},"solmate/src/tokens/ERC721.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity >=0.8.0;\n\n/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)\nabstract contract ERC721 {\n    /*//////////////////////////////////////////////////////////////\n                                 EVENTS\n    //////////////////////////////////////////////////////////////*/\n\n    event Transfer(address indexed from, address indexed to, uint256 indexed id);\n\n    event Approval(address indexed owner, address indexed spender, uint256 indexed id);\n\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /*//////////////////////////////////////////////////////////////\n                         METADATA STORAGE/LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    string public name;\n\n    string public symbol;\n\n    function tokenURI(uint256 id) public view virtual returns (string memory);\n\n    /*//////////////////////////////////////////////////////////////\n                      ERC721 BALANCE/OWNER STORAGE\n    //////////////////////////////////////////////////////////////*/\n\n    mapping(uint256 => address) internal _ownerOf;\n\n    mapping(address => uint256) internal _balanceOf;\n\n    function ownerOf(uint256 id) public view virtual returns (address owner) {\n        require((owner = _ownerOf[id]) != address(0), \"NOT_MINTED\");\n    }\n\n    function balanceOf(address owner) public view virtual returns (uint256) {\n        require(owner != address(0), \"ZERO_ADDRESS\");\n\n        return _balanceOf[owner];\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                         ERC721 APPROVAL STORAGE\n    //////////////////////////////////////////////////////////////*/\n\n    mapping(uint256 => address) public getApproved;\n\n    mapping(address => mapping(address => bool)) public isApprovedForAll;\n\n    /*//////////////////////////////////////////////////////////////\n                               CONSTRUCTOR\n    //////////////////////////////////////////////////////////////*/\n\n    constructor(string memory _name, string memory _symbol) {\n        name = _name;\n        symbol = _symbol;\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                              ERC721 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function approve(address spender, uint256 id) public virtual {\n        address owner = _ownerOf[id];\n\n        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \"NOT_AUTHORIZED\");\n\n        getApproved[id] = spender;\n\n        emit Approval(owner, spender, id);\n    }\n\n    function setApprovalForAll(address operator, bool approved) public virtual {\n        isApprovedForAll[msg.sender][operator] = approved;\n\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 id\n    ) public virtual {\n        require(from == _ownerOf[id], \"WRONG_FROM\");\n\n        require(to != address(0), \"INVALID_RECIPIENT\");\n\n        require(\n            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],\n            \"NOT_AUTHORIZED\"\n        );\n\n        // Underflow of the sender's balance is impossible because we check for\n        // ownership above and the recipient's balance can't realistically overflow.\n        unchecked {\n            _balanceOf[from]--;\n\n            _balanceOf[to]++;\n        }\n\n        _ownerOf[id] = to;\n\n        delete getApproved[id];\n\n        emit Transfer(from, to, id);\n    }\n\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id\n    ) public virtual {\n        transferFrom(from, to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, \"\") ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        bytes calldata data\n    ) public virtual {\n        transferFrom(from, to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                              ERC165 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return\n            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\n            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\n            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                        INTERNAL MINT/BURN LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function _mint(address to, uint256 id) internal virtual {\n        require(to != address(0), \"INVALID_RECIPIENT\");\n\n        require(_ownerOf[id] == address(0), \"ALREADY_MINTED\");\n\n        // Counter overflow is incredibly unrealistic.\n        unchecked {\n            _balanceOf[to]++;\n        }\n\n        _ownerOf[id] = to;\n\n        emit Transfer(address(0), to, id);\n    }\n\n    function _burn(uint256 id) internal virtual {\n        address owner = _ownerOf[id];\n\n        require(owner != address(0), \"NOT_MINTED\");\n\n        // Ownership check above ensures no underflow.\n        unchecked {\n            _balanceOf[owner]--;\n        }\n\n        delete _ownerOf[id];\n\n        delete getApproved[id];\n\n        emit Transfer(owner, address(0), id);\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                        INTERNAL SAFE MINT LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function _safeMint(address to, uint256 id) internal virtual {\n        _mint(to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, \"\") ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function _safeMint(\n        address to,\n        uint256 id,\n        bytes memory data\n    ) internal virtual {\n        _mint(to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n}\n\n/// @notice A generic interface for a contract which properly accepts ERC721 tokens.\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)\nabstract contract ERC721TokenReceiver {\n    function onERC721Received(\n        address,\n        address,\n        uint256,\n        bytes calldata\n    ) external virtual returns (bytes4) {\n        return ERC721TokenReceiver.onERC721Received.selector;\n    }\n}\n"},"solmate/src/utils/SafeTransferLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity >=0.8.0;\n\nimport {ERC20} from \"../tokens/ERC20.sol\";\n\n/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)\n/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.\nlibrary SafeTransferLib {\n    /*//////////////////////////////////////////////////////////////\n                             ETH OPERATIONS\n    //////////////////////////////////////////////////////////////*/\n\n    function safeTransferETH(address to, uint256 amount) internal {\n        bool success;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Transfer the ETH and store if it succeeded or not.\n            success := call(gas(), to, amount, 0, 0, 0, 0)\n        }\n\n        require(success, \"ETH_TRANSFER_FAILED\");\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                            ERC20 OPERATIONS\n    //////////////////////////////////////////////////////////////*/\n\n    function safeTransferFrom(\n        ERC20 token,\n        address from,\n        address to,\n        uint256 amount\n    ) internal {\n        bool success;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Get a pointer to some free memory.\n            let freeMemoryPointer := mload(0x40)\n\n            // Write the abi-encoded calldata into memory, beginning with the function selector.\n            mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000)\n            mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the \"from\" argument.\n            mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the \"to\" argument.\n            mstore(add(freeMemoryPointer, 68), amount) // Append the \"amount\" argument. Masking not required as it's a full 32 byte type.\n\n            // We use 100 because the length of our calldata totals up like so: 4 + 32 * 3.\n            // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.\n            success := call(gas(), token, 0, freeMemoryPointer, 100, 0, 32)\n\n            // Set success to whether the call reverted, if not we check it either\n            // returned exactly 1 (can't just be non-zero data), or had no return data and token has code.\n            if and(iszero(and(eq(mload(0), 1), gt(returndatasize(), 31))), success) {\n                success := iszero(or(iszero(extcodesize(token)), returndatasize())) \n            }\n        }\n\n        require(success, \"TRANSFER_FROM_FAILED\");\n    }\n\n    function safeTransfer(\n        ERC20 token,\n        address to,\n        uint256 amount\n    ) internal {\n        bool success;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Get a pointer to some free memory.\n            let freeMemoryPointer := mload(0x40)\n\n            // Write the abi-encoded calldata into memory, beginning with the function selector.\n            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000)\n            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the \"to\" argument.\n            mstore(add(freeMemoryPointer, 36), amount) // Append the \"amount\" argument. Masking not required as it's a full 32 byte type.\n\n            // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.\n            // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.\n            success := call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)\n\n            // Set success to whether the call reverted, if not we check it either\n            // returned exactly 1 (can't just be non-zero data), or had no return data and token has code.\n            if and(iszero(and(eq(mload(0), 1), gt(returndatasize(), 31))), success) {\n                success := iszero(or(iszero(extcodesize(token)), returndatasize())) \n            }\n        }\n\n        require(success, \"TRANSFER_FAILED\");\n    }\n\n    function safeApprove(\n        ERC20 token,\n        address to,\n        uint256 amount\n    ) internal {\n        bool success;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Get a pointer to some free memory.\n            let freeMemoryPointer := mload(0x40)\n\n            // Write the abi-encoded calldata into memory, beginning with the function selector.\n            mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000)\n            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the \"to\" argument.\n            mstore(add(freeMemoryPointer, 36), amount) // Append the \"amount\" argument. Masking not required as it's a full 32 byte type.\n\n            // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.\n            // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.\n            success := call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)\n\n            // Set success to whether the call reverted, if not we check it either\n            // returned exactly 1 (can't just be non-zero data), or had no return data and token has code.\n            if and(iszero(and(eq(mload(0), 1), gt(returndatasize(), 31))), success) {\n                success := iszero(or(iszero(extcodesize(token)), returndatasize())) \n            }\n        }\n\n        require(success, \"APPROVE_FAILED\");\n    }\n}\n"}},"settings":{"viaIR":true,"evmVersion":"istanbul","optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"none"},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"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--> @airdao/astra-contracts/contracts/core/interfaces/IAstraPair.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":"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol","start":-1},"type":"Warning"},{"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/modules/Permit2Payments.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/modules/Permit2Payments.sol","start":-1},"type":"Warning"}],"sources":{"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","exportedSymbols":{"IAstraCLPool":[27],"IAstraCLPoolActions":[137],"IAstraCLPoolDerivedState":[168],"IAstraCLPoolEvents":[287],"IAstraCLPoolImmutables":[327],"IAstraCLPoolOwnerActions":[353],"IAstraCLPoolState":[461]},"id":28,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:0"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol","file":"./pool/IAstraCLPoolActions.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":28,"sourceUnit":138,"src":"71:67:0","symbolAliases":[{"foreign":{"id":2,"name":"IAstraCLPoolActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":137,"src":"79:19:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol","file":"./pool/IAstraCLPoolDerivedState.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":28,"sourceUnit":169,"src":"139:77:0","symbolAliases":[{"foreign":{"id":4,"name":"IAstraCLPoolDerivedState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"147:24:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol","file":"./pool/IAstraCLPoolEvents.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":28,"sourceUnit":288,"src":"217:65:0","symbolAliases":[{"foreign":{"id":6,"name":"IAstraCLPoolEvents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"225:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol","file":"./pool/IAstraCLPoolImmutables.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":28,"sourceUnit":328,"src":"283:73:0","symbolAliases":[{"foreign":{"id":8,"name":"IAstraCLPoolImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"291:22:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol","file":"./pool/IAstraCLPoolOwnerActions.sol","id":11,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":28,"sourceUnit":354,"src":"357:77:0","symbolAliases":[{"foreign":{"id":10,"name":"IAstraCLPoolOwnerActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":353,"src":"365:24:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol","file":"./pool/IAstraCLPoolState.sol","id":13,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":28,"sourceUnit":462,"src":"435:63:0","symbolAliases":[{"foreign":{"id":12,"name":"IAstraCLPoolState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"443:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15,"name":"IAstraCLPoolImmutables","nameLocations":["792:22:0"],"nodeType":"IdentifierPath","referencedDeclaration":327,"src":"792:22:0"},"id":16,"nodeType":"InheritanceSpecifier","src":"792:22:0"},{"baseName":{"id":17,"name":"IAstraCLPoolState","nameLocations":["820:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":461,"src":"820:17:0"},"id":18,"nodeType":"InheritanceSpecifier","src":"820:17:0"},{"baseName":{"id":19,"name":"IAstraCLPoolDerivedState","nameLocations":["843:24:0"],"nodeType":"IdentifierPath","referencedDeclaration":168,"src":"843:24:0"},"id":20,"nodeType":"InheritanceSpecifier","src":"843:24:0"},{"baseName":{"id":21,"name":"IAstraCLPoolActions","nameLocations":["873:19:0"],"nodeType":"IdentifierPath","referencedDeclaration":137,"src":"873:19:0"},"id":22,"nodeType":"InheritanceSpecifier","src":"873:19:0"},{"baseName":{"id":23,"name":"IAstraCLPoolOwnerActions","nameLocations":["898:24:0"],"nodeType":"IdentifierPath","referencedDeclaration":353,"src":"898:24:0"},"id":24,"nodeType":"InheritanceSpecifier","src":"898:24:0"},{"baseName":{"id":25,"name":"IAstraCLPoolEvents","nameLocations":["928:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":287,"src":"928:18:0"},"id":26,"nodeType":"InheritanceSpecifier","src":"928:18:0"}],"canonicalName":"IAstraCLPool","contractDependencies":[],"contractKind":"interface","documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"500:262:0","text":"@title The interface for a Astra CL Pool\n @notice An Astra pool facilitates swapping and automated market making between any two assets that strictly conform\n to the ERC20 specification\n @dev The pool interface is broken up into many smaller pieces"},"fullyImplemented":false,"id":27,"linearizedBaseContracts":[27,287,353,137,168,461,327],"name":"IAstraCLPool","nameLocation":"772:12:0","nodeType":"ContractDefinition","nodes":[],"scope":28,"src":"762:187:0","usedErrors":[]}],"src":"45:905:0"},"id":0},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","exportedSymbols":{"IAstraCLSwapCallback":[41]},"id":42,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":29,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraCLSwapCallback","contractDependencies":[],"contractKind":"interface","documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"71:140:1","text":"@title Callback for IAstraCLPoolActions#swap\n @notice Any contract that calls IAstraCLPoolActions#swap must implement this interface"},"fullyImplemented":false,"id":41,"linearizedBaseContracts":[41],"name":"IAstraCLSwapCallback","nameLocation":"221:20:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"248:890:1","text":"@notice Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\n @dev In the implementation you must pay the pool tokens owed for the swap.\n The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n @param data Any data passed through by the caller via the IAstraCLPoolActions#swap call"},"functionSelector":"11c17848","id":40,"implemented":false,"kind":"function","modifiers":[],"name":"astraCLSwapCallback","nameLocation":"1152:19:1","nodeType":"FunctionDefinition","parameters":{"id":38,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"amount0Delta","nameLocation":"1179:12:1","nodeType":"VariableDeclaration","scope":40,"src":"1172:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":32,"name":"int256","nodeType":"ElementaryTypeName","src":"1172:6:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":35,"mutability":"mutable","name":"amount1Delta","nameLocation":"1200:12:1","nodeType":"VariableDeclaration","scope":40,"src":"1193:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":34,"name":"int256","nodeType":"ElementaryTypeName","src":"1193:6:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":37,"mutability":"mutable","name":"data","nameLocation":"1229:4:1","nodeType":"VariableDeclaration","scope":40,"src":"1214:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":36,"name":"bytes","nodeType":"ElementaryTypeName","src":"1214:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1171:63:1"},"returnParameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"1243:0:1"},"scope":41,"src":"1143:101:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":42,"src":"211:1035:1","usedErrors":[]}],"src":"45:1202:1"},"id":1},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol","exportedSymbols":{"IAstraCLPoolActions":[137]},"id":138,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":43,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraCLPoolActions","contractDependencies":[],"contractKind":"interface","documentation":{"id":44,"nodeType":"StructuredDocumentation","src":"71:102:2","text":"@title Permissionless pool actions\n @notice Contains pool methods that can be called by anyone"},"fullyImplemented":false,"id":137,"linearizedBaseContracts":[137],"name":"IAstraCLPoolActions","nameLocation":"183:19:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"209:206:2","text":"@notice Sets the initial price for the pool\n @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96"},"functionSelector":"f637731d","id":50,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"429:10:2","nodeType":"FunctionDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"448:12:2","nodeType":"VariableDeclaration","scope":50,"src":"440:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":46,"name":"uint160","nodeType":"ElementaryTypeName","src":"440:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"439:22:2"},"returnParameters":{"id":49,"nodeType":"ParameterList","parameters":[],"src":"470:0:2"},"scope":137,"src":"420:51:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":51,"nodeType":"StructuredDocumentation","src":"477:1029:2","text":"@notice Adds liquidity for the given recipient/tickLower/tickUpper position\n @dev The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback\n in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n on tickLower, tickUpper, the amount of liquidity, and the current price.\n @param recipient The address for which the liquidity will be created\n @param tickLower The lower tick of the position in which to add liquidity\n @param tickUpper The upper tick of the position in which to add liquidity\n @param amount The amount of liquidity to mint\n @param data Any data that should be passed through to the callback\n @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"},"functionSelector":"3c8a7d8d","id":68,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"1520:4:2","nodeType":"FunctionDefinition","parameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53,"mutability":"mutable","name":"recipient","nameLocation":"1542:9:2","nodeType":"VariableDeclaration","scope":68,"src":"1534:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52,"name":"address","nodeType":"ElementaryTypeName","src":"1534:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55,"mutability":"mutable","name":"tickLower","nameLocation":"1567:9:2","nodeType":"VariableDeclaration","scope":68,"src":"1561:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":54,"name":"int24","nodeType":"ElementaryTypeName","src":"1561:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tickUpper","nameLocation":"1592:9:2","nodeType":"VariableDeclaration","scope":68,"src":"1586:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":56,"name":"int24","nodeType":"ElementaryTypeName","src":"1586:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"amount","nameLocation":"1619:6:2","nodeType":"VariableDeclaration","scope":68,"src":"1611:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":58,"name":"uint128","nodeType":"ElementaryTypeName","src":"1611:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":61,"mutability":"mutable","name":"data","nameLocation":"1650:4:2","nodeType":"VariableDeclaration","scope":68,"src":"1635:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60,"name":"bytes","nodeType":"ElementaryTypeName","src":"1635:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1524:136:2"},"returnParameters":{"id":67,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"amount0","nameLocation":"1687:7:2","nodeType":"VariableDeclaration","scope":68,"src":"1679:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":63,"name":"uint256","nodeType":"ElementaryTypeName","src":"1679:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":66,"mutability":"mutable","name":"amount1","nameLocation":"1704:7:2","nodeType":"VariableDeclaration","scope":68,"src":"1696:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":65,"name":"uint256","nodeType":"ElementaryTypeName","src":"1696:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1678:34:2"},"scope":137,"src":"1511:202:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1719:1053:2","text":"@notice Collects tokens owed to a position\n @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n @param recipient The address which should receive the fees collected\n @param tickLower The lower tick of the position for which to collect fees\n @param tickUpper The upper tick of the position for which to collect fees\n @param amount0Requested How much token0 should be withdrawn from the fees owed\n @param amount1Requested How much token1 should be withdrawn from the fees owed\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1"},"functionSelector":"4f1eb3d8","id":86,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nameLocation":"2786:7:2","nodeType":"FunctionDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"recipient","nameLocation":"2811:9:2","nodeType":"VariableDeclaration","scope":86,"src":"2803:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"2803:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73,"mutability":"mutable","name":"tickLower","nameLocation":"2836:9:2","nodeType":"VariableDeclaration","scope":86,"src":"2830:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":72,"name":"int24","nodeType":"ElementaryTypeName","src":"2830:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":75,"mutability":"mutable","name":"tickUpper","nameLocation":"2861:9:2","nodeType":"VariableDeclaration","scope":86,"src":"2855:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":74,"name":"int24","nodeType":"ElementaryTypeName","src":"2855:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":77,"mutability":"mutable","name":"amount0Requested","nameLocation":"2888:16:2","nodeType":"VariableDeclaration","scope":86,"src":"2880:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":76,"name":"uint128","nodeType":"ElementaryTypeName","src":"2880:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":79,"mutability":"mutable","name":"amount1Requested","nameLocation":"2922:16:2","nodeType":"VariableDeclaration","scope":86,"src":"2914:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":78,"name":"uint128","nodeType":"ElementaryTypeName","src":"2914:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2793:151:2"},"returnParameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82,"mutability":"mutable","name":"amount0","nameLocation":"2971:7:2","nodeType":"VariableDeclaration","scope":86,"src":"2963:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":81,"name":"uint128","nodeType":"ElementaryTypeName","src":"2963:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":84,"mutability":"mutable","name":"amount1","nameLocation":"2988:7:2","nodeType":"VariableDeclaration","scope":86,"src":"2980:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83,"name":"uint128","nodeType":"ElementaryTypeName","src":"2980:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2962:34:2"},"scope":137,"src":"2777:220:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":87,"nodeType":"StructuredDocumentation","src":"3003:631:2","text":"@notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n @dev Fees must be collected separately via a call to #collect\n @param tickLower The lower tick of the position for which to burn liquidity\n @param tickUpper The upper tick of the position for which to burn liquidity\n @param amount How much liquidity to burn\n @return amount0 The amount of token0 sent to the recipient\n @return amount1 The amount of token1 sent to the recipient"},"functionSelector":"a34123a7","id":100,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"3648:4:2","nodeType":"FunctionDefinition","parameters":{"id":94,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"tickLower","nameLocation":"3659:9:2","nodeType":"VariableDeclaration","scope":100,"src":"3653:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":88,"name":"int24","nodeType":"ElementaryTypeName","src":"3653:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":91,"mutability":"mutable","name":"tickUpper","nameLocation":"3676:9:2","nodeType":"VariableDeclaration","scope":100,"src":"3670:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":90,"name":"int24","nodeType":"ElementaryTypeName","src":"3670:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":93,"mutability":"mutable","name":"amount","nameLocation":"3695:6:2","nodeType":"VariableDeclaration","scope":100,"src":"3687:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":92,"name":"uint128","nodeType":"ElementaryTypeName","src":"3687:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3652:50:2"},"returnParameters":{"id":99,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"mutability":"mutable","name":"amount0","nameLocation":"3729:7:2","nodeType":"VariableDeclaration","scope":100,"src":"3721:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":95,"name":"uint256","nodeType":"ElementaryTypeName","src":"3721:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":98,"mutability":"mutable","name":"amount1","nameLocation":"3746:7:2","nodeType":"VariableDeclaration","scope":100,"src":"3738:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":97,"name":"uint256","nodeType":"ElementaryTypeName","src":"3738:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3720:34:2"},"scope":137,"src":"3639:116:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":101,"nodeType":"StructuredDocumentation","src":"3761:1015:2","text":"@notice Swap token0 for token1, or token1 for token0\n @dev The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\n @param recipient The address to receive the output of the swap\n @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n value after the swap. If one for zero, the price cannot be greater than this value after the swap\n @param data Any data to be passed through to the callback\n @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive"},"functionSelector":"128acb08","id":118,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"4790:4:2","nodeType":"FunctionDefinition","parameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":103,"mutability":"mutable","name":"recipient","nameLocation":"4812:9:2","nodeType":"VariableDeclaration","scope":118,"src":"4804:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":102,"name":"address","nodeType":"ElementaryTypeName","src":"4804:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":105,"mutability":"mutable","name":"zeroForOne","nameLocation":"4836:10:2","nodeType":"VariableDeclaration","scope":118,"src":"4831:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":104,"name":"bool","nodeType":"ElementaryTypeName","src":"4831:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":107,"mutability":"mutable","name":"amountSpecified","nameLocation":"4863:15:2","nodeType":"VariableDeclaration","scope":118,"src":"4856:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":106,"name":"int256","nodeType":"ElementaryTypeName","src":"4856:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":109,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"4896:17:2","nodeType":"VariableDeclaration","scope":118,"src":"4888:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":108,"name":"uint160","nodeType":"ElementaryTypeName","src":"4888:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":111,"mutability":"mutable","name":"data","nameLocation":"4938:4:2","nodeType":"VariableDeclaration","scope":118,"src":"4923:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":110,"name":"bytes","nodeType":"ElementaryTypeName","src":"4923:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4794:154:2"},"returnParameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"amount0","nameLocation":"4974:7:2","nodeType":"VariableDeclaration","scope":118,"src":"4967:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":113,"name":"int256","nodeType":"ElementaryTypeName","src":"4967:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"amount1","nameLocation":"4990:7:2","nodeType":"VariableDeclaration","scope":118,"src":"4983:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":115,"name":"int256","nodeType":"ElementaryTypeName","src":"4983:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4966:32:2"},"scope":137,"src":"4781:218:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5005:657:2","text":"@notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n @dev The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallback\n @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n with 0 amount{0,1} and sending the donation amount(s) from the callback\n @param recipient The address which will receive the token0 and token1 amounts\n @param amount0 The amount of token0 to send\n @param amount1 The amount of token1 to send\n @param data Any data to be passed through to the callback"},"functionSelector":"490e6cbc","id":130,"implemented":false,"kind":"function","modifiers":[],"name":"flash","nameLocation":"5676:5:2","nodeType":"FunctionDefinition","parameters":{"id":128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"recipient","nameLocation":"5690:9:2","nodeType":"VariableDeclaration","scope":130,"src":"5682:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5682:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":123,"mutability":"mutable","name":"amount0","nameLocation":"5709:7:2","nodeType":"VariableDeclaration","scope":130,"src":"5701:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":122,"name":"uint256","nodeType":"ElementaryTypeName","src":"5701:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":125,"mutability":"mutable","name":"amount1","nameLocation":"5726:7:2","nodeType":"VariableDeclaration","scope":130,"src":"5718:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":124,"name":"uint256","nodeType":"ElementaryTypeName","src":"5718:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":127,"mutability":"mutable","name":"data","nameLocation":"5750:4:2","nodeType":"VariableDeclaration","scope":130,"src":"5735:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":126,"name":"bytes","nodeType":"ElementaryTypeName","src":"5735:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5681:74:2"},"returnParameters":{"id":129,"nodeType":"ParameterList","parameters":[],"src":"5764:0:2"},"scope":137,"src":"5667:98:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":131,"nodeType":"StructuredDocumentation","src":"5771:367:2","text":"@notice Increase the maximum number of price and liquidity observations that this pool will store\n @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n the input observationCardinalityNext.\n @param observationCardinalityNext The desired minimum number of observations for the pool to store"},"functionSelector":"32148f67","id":136,"implemented":false,"kind":"function","modifiers":[],"name":"increaseObservationCardinalityNext","nameLocation":"6152:34:2","nodeType":"FunctionDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":133,"mutability":"mutable","name":"observationCardinalityNext","nameLocation":"6194:26:2","nodeType":"VariableDeclaration","scope":136,"src":"6187:33:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":132,"name":"uint16","nodeType":"ElementaryTypeName","src":"6187:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6186:35:2"},"returnParameters":{"id":135,"nodeType":"ParameterList","parameters":[],"src":"6230:0:2"},"scope":137,"src":"6143:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":138,"src":"173:6060:2","usedErrors":[]}],"src":"45:6189:2"},"id":2},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol","exportedSymbols":{"IAstraCLPoolDerivedState":[168]},"id":169,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":139,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraCLPoolDerivedState","contractDependencies":[],"contractKind":"interface","documentation":{"id":140,"nodeType":"StructuredDocumentation","src":"71:222:3","text":"@title Pool state that is not stored\n @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n blockchain. The functions here may have variable gas costs."},"fullyImplemented":false,"id":168,"linearizedBaseContracts":[168],"name":"IAstraCLPoolDerivedState","nameLocation":"303:24:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":141,"nodeType":"StructuredDocumentation","src":"334:1045:3","text":"@notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n you must call it with secondsAgos = [3600, 0].\n @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n timestamp"},"functionSelector":"883bdbfd","id":153,"implemented":false,"kind":"function","modifiers":[],"name":"observe","nameLocation":"1393:7:3","nodeType":"FunctionDefinition","parameters":{"id":145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":144,"mutability":"mutable","name":"secondsAgos","nameLocation":"1428:11:3","nodeType":"VariableDeclaration","scope":153,"src":"1410:29:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":142,"name":"uint32","nodeType":"ElementaryTypeName","src":"1410:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":143,"nodeType":"ArrayTypeName","src":"1410:8:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"1400:45:3"},"returnParameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"tickCumulatives","nameLocation":"1484:15:3","nodeType":"VariableDeclaration","scope":153,"src":"1469:30:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":146,"name":"int56","nodeType":"ElementaryTypeName","src":"1469:5:3","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":147,"nodeType":"ArrayTypeName","src":"1469:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":151,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nameLocation":"1518:34:3","nodeType":"VariableDeclaration","scope":153,"src":"1501:51:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":149,"name":"uint160","nodeType":"ElementaryTypeName","src":"1501:7:3","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":150,"nodeType":"ArrayTypeName","src":"1501:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"}],"src":"1468:85:3"},"scope":168,"src":"1384:170:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"1560:771:3","text":"@notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n snapshot is taken and the second snapshot is taken.\n @param tickLower The lower tick of the range\n @param tickUpper The upper tick of the range\n @return tickCumulativeInside The snapshot of the tick accumulator for the range\n @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n @return secondsInside The snapshot of seconds per liquidity for the range"},"functionSelector":"a38807f2","id":167,"implemented":false,"kind":"function","modifiers":[],"name":"snapshotCumulativesInside","nameLocation":"2345:25:3","nodeType":"FunctionDefinition","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"tickLower","nameLocation":"2386:9:3","nodeType":"VariableDeclaration","scope":167,"src":"2380:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":155,"name":"int24","nodeType":"ElementaryTypeName","src":"2380:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":158,"mutability":"mutable","name":"tickUpper","nameLocation":"2411:9:3","nodeType":"VariableDeclaration","scope":167,"src":"2405:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":157,"name":"int24","nodeType":"ElementaryTypeName","src":"2405:5:3","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2370:56:3"},"returnParameters":{"id":166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161,"mutability":"mutable","name":"tickCumulativeInside","nameLocation":"2456:20:3","nodeType":"VariableDeclaration","scope":167,"src":"2450:26:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":160,"name":"int56","nodeType":"ElementaryTypeName","src":"2450:5:3","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":163,"mutability":"mutable","name":"secondsPerLiquidityInsideX128","nameLocation":"2486:29:3","nodeType":"VariableDeclaration","scope":167,"src":"2478:37:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":162,"name":"uint160","nodeType":"ElementaryTypeName","src":"2478:7:3","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":165,"mutability":"mutable","name":"secondsInside","nameLocation":"2524:13:3","nodeType":"VariableDeclaration","scope":167,"src":"2517:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":164,"name":"uint32","nodeType":"ElementaryTypeName","src":"2517:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2449:89:3"},"scope":168,"src":"2336:203:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":169,"src":"293:2248:3","usedErrors":[]}],"src":"45:2497:3"},"id":3},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol","exportedSymbols":{"IAstraCLPoolEvents":[287]},"id":288,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":170,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraCLPoolEvents","contractDependencies":[],"contractKind":"interface","documentation":{"id":171,"nodeType":"StructuredDocumentation","src":"71:88:4","text":"@title Events emitted by a pool\n @notice Contains all events emitted by the pool"},"fullyImplemented":true,"id":287,"linearizedBaseContracts":[287],"name":"IAstraCLPoolEvents","nameLocation":"169:18:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"194:344:4","text":"@notice Emitted exactly once by a pool when #initialize is first called on the pool\n @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool"},"eventSelector":"98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95","id":178,"name":"Initialize","nameLocation":"549:10:4","nodeType":"EventDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"568:12:4","nodeType":"VariableDeclaration","scope":178,"src":"560:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":173,"name":"uint160","nodeType":"ElementaryTypeName","src":"560:7:4","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":176,"indexed":false,"mutability":"mutable","name":"tick","nameLocation":"588:4:4","nodeType":"VariableDeclaration","scope":178,"src":"582:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":175,"name":"int24","nodeType":"ElementaryTypeName","src":"582:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"559:34:4"},"src":"543:51:4"},{"anonymous":false,"documentation":{"id":179,"nodeType":"StructuredDocumentation","src":"600:551:4","text":"@notice Emitted when liquidity is minted for a given position\n @param sender The address that minted the liquidity\n @param owner The owner of the position and recipient of any minted liquidity\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity minted to the position range\n @param amount0 How much token0 was required for the minted liquidity\n @param amount1 How much token1 was required for the minted liquidity"},"eventSelector":"7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde","id":195,"name":"Mint","nameLocation":"1162:4:4","nodeType":"EventDefinition","parameters":{"id":194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":181,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"1184:6:4","nodeType":"VariableDeclaration","scope":195,"src":"1176:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":180,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":183,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1216:5:4","nodeType":"VariableDeclaration","scope":195,"src":"1200:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":182,"name":"address","nodeType":"ElementaryTypeName","src":"1200:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":185,"indexed":true,"mutability":"mutable","name":"tickLower","nameLocation":"1245:9:4","nodeType":"VariableDeclaration","scope":195,"src":"1231:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":184,"name":"int24","nodeType":"ElementaryTypeName","src":"1231:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":187,"indexed":true,"mutability":"mutable","name":"tickUpper","nameLocation":"1278:9:4","nodeType":"VariableDeclaration","scope":195,"src":"1264:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":186,"name":"int24","nodeType":"ElementaryTypeName","src":"1264:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":189,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1305:6:4","nodeType":"VariableDeclaration","scope":195,"src":"1297:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":188,"name":"uint128","nodeType":"ElementaryTypeName","src":"1297:7:4","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":191,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"1329:7:4","nodeType":"VariableDeclaration","scope":195,"src":"1321:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1321:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":193,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"1354:7:4","nodeType":"VariableDeclaration","scope":195,"src":"1346:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":192,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1166:201:4"},"src":"1156:212:4"},{"anonymous":false,"documentation":{"id":196,"nodeType":"StructuredDocumentation","src":"1374:493:4","text":"@notice Emitted when fees are collected by the owner of a position\n @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n @param owner The owner of the position for which fees are collected\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount0 The amount of token0 fees collected\n @param amount1 The amount of token1 fees collected"},"eventSelector":"70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0","id":210,"name":"Collect","nameLocation":"1878:7:4","nodeType":"EventDefinition","parameters":{"id":209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1911:5:4","nodeType":"VariableDeclaration","scope":210,"src":"1895:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"1895:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":200,"indexed":false,"mutability":"mutable","name":"recipient","nameLocation":"1934:9:4","nodeType":"VariableDeclaration","scope":210,"src":"1926:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":199,"name":"address","nodeType":"ElementaryTypeName","src":"1926:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":202,"indexed":true,"mutability":"mutable","name":"tickLower","nameLocation":"1967:9:4","nodeType":"VariableDeclaration","scope":210,"src":"1953:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":201,"name":"int24","nodeType":"ElementaryTypeName","src":"1953:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":204,"indexed":true,"mutability":"mutable","name":"tickUpper","nameLocation":"2000:9:4","nodeType":"VariableDeclaration","scope":210,"src":"1986:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":203,"name":"int24","nodeType":"ElementaryTypeName","src":"1986:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":206,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"2027:7:4","nodeType":"VariableDeclaration","scope":210,"src":"2019:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":205,"name":"uint128","nodeType":"ElementaryTypeName","src":"2019:7:4","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":208,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"2052:7:4","nodeType":"VariableDeclaration","scope":210,"src":"2044:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":207,"name":"uint128","nodeType":"ElementaryTypeName","src":"2044:7:4","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1885:180:4"},"src":"1872:194:4"},{"anonymous":false,"documentation":{"id":211,"nodeType":"StructuredDocumentation","src":"2072:523:4","text":"@notice Emitted when a position's liquidity is removed\n @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n @param owner The owner of the position for which liquidity is removed\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity to remove\n @param amount0 The amount of token0 withdrawn\n @param amount1 The amount of token1 withdrawn"},"eventSelector":"0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c","id":225,"name":"Burn","nameLocation":"2606:4:4","nodeType":"EventDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2636:5:4","nodeType":"VariableDeclaration","scope":225,"src":"2620:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":212,"name":"address","nodeType":"ElementaryTypeName","src":"2620:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":215,"indexed":true,"mutability":"mutable","name":"tickLower","nameLocation":"2665:9:4","nodeType":"VariableDeclaration","scope":225,"src":"2651:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":214,"name":"int24","nodeType":"ElementaryTypeName","src":"2651:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":217,"indexed":true,"mutability":"mutable","name":"tickUpper","nameLocation":"2698:9:4","nodeType":"VariableDeclaration","scope":225,"src":"2684:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":216,"name":"int24","nodeType":"ElementaryTypeName","src":"2684:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":219,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2725:6:4","nodeType":"VariableDeclaration","scope":225,"src":"2717:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":218,"name":"uint128","nodeType":"ElementaryTypeName","src":"2717:7:4","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":221,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"2749:7:4","nodeType":"VariableDeclaration","scope":225,"src":"2741:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":220,"name":"uint256","nodeType":"ElementaryTypeName","src":"2741:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":223,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"2774:7:4","nodeType":"VariableDeclaration","scope":225,"src":"2766:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":222,"name":"uint256","nodeType":"ElementaryTypeName","src":"2766:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2610:177:4"},"src":"2600:188:4"},{"anonymous":false,"documentation":{"id":226,"nodeType":"StructuredDocumentation","src":"2794:600:4","text":"@notice Emitted by the pool for any swaps between token0 and token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the output of the swap\n @param amount0 The delta of the token0 balance of the pool\n @param amount1 The delta of the token1 balance of the pool\n @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n @param liquidity The liquidity of the pool after the swap\n @param tick The log base 1.0001 of price of the pool after the swap"},"eventSelector":"c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67","id":242,"name":"Swap","nameLocation":"3405:4:4","nodeType":"EventDefinition","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":228,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"3435:6:4","nodeType":"VariableDeclaration","scope":242,"src":"3419:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":227,"name":"address","nodeType":"ElementaryTypeName","src":"3419:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":230,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"3467:9:4","nodeType":"VariableDeclaration","scope":242,"src":"3451:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":229,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":232,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"3493:7:4","nodeType":"VariableDeclaration","scope":242,"src":"3486:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":231,"name":"int256","nodeType":"ElementaryTypeName","src":"3486:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":234,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"3517:7:4","nodeType":"VariableDeclaration","scope":242,"src":"3510:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":233,"name":"int256","nodeType":"ElementaryTypeName","src":"3510:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":236,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"3542:12:4","nodeType":"VariableDeclaration","scope":242,"src":"3534:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":235,"name":"uint160","nodeType":"ElementaryTypeName","src":"3534:7:4","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":238,"indexed":false,"mutability":"mutable","name":"liquidity","nameLocation":"3572:9:4","nodeType":"VariableDeclaration","scope":242,"src":"3564:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":237,"name":"uint128","nodeType":"ElementaryTypeName","src":"3564:7:4","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":240,"indexed":false,"mutability":"mutable","name":"tick","nameLocation":"3597:4:4","nodeType":"VariableDeclaration","scope":242,"src":"3591:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":239,"name":"int24","nodeType":"ElementaryTypeName","src":"3591:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3409:198:4"},"src":"3399:209:4"},{"anonymous":false,"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"3614:562:4","text":"@notice Emitted by the pool for any flashes of token0/token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the tokens from flash\n @param amount0 The amount of token0 that was flashed\n @param amount1 The amount of token1 that was flashed\n @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee"},"eventSelector":"bdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633","id":257,"name":"Flash","nameLocation":"4187:5:4","nodeType":"EventDefinition","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"4218:6:4","nodeType":"VariableDeclaration","scope":257,"src":"4202:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":244,"name":"address","nodeType":"ElementaryTypeName","src":"4202:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":247,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4250:9:4","nodeType":"VariableDeclaration","scope":257,"src":"4234:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":246,"name":"address","nodeType":"ElementaryTypeName","src":"4234:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":249,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"4277:7:4","nodeType":"VariableDeclaration","scope":257,"src":"4269:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":248,"name":"uint256","nodeType":"ElementaryTypeName","src":"4269:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":251,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"4302:7:4","nodeType":"VariableDeclaration","scope":257,"src":"4294:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":250,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":253,"indexed":false,"mutability":"mutable","name":"paid0","nameLocation":"4327:5:4","nodeType":"VariableDeclaration","scope":257,"src":"4319:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"4319:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"indexed":false,"mutability":"mutable","name":"paid1","nameLocation":"4350:5:4","nodeType":"VariableDeclaration","scope":257,"src":"4342:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"4342:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:169:4"},"src":"4181:181:4"},{"anonymous":false,"documentation":{"id":258,"nodeType":"StructuredDocumentation","src":"4368:451:4","text":"@notice Emitted by the pool for increases to the number of observations that can be stored\n @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n just before a mint/swap/burn.\n @param observationCardinalityNextOld The previous value of the next observation cardinality\n @param observationCardinalityNextNew The updated value of the next observation cardinality"},"eventSelector":"ac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a","id":264,"name":"IncreaseObservationCardinalityNext","nameLocation":"4830:34:4","nodeType":"EventDefinition","parameters":{"id":263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":260,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextOld","nameLocation":"4881:29:4","nodeType":"VariableDeclaration","scope":264,"src":"4874:36:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":259,"name":"uint16","nodeType":"ElementaryTypeName","src":"4874:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":262,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextNew","nameLocation":"4927:29:4","nodeType":"VariableDeclaration","scope":264,"src":"4920:36:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":261,"name":"uint16","nodeType":"ElementaryTypeName","src":"4920:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4864:98:4"},"src":"4824:139:4"},{"anonymous":false,"documentation":{"id":265,"nodeType":"StructuredDocumentation","src":"4969:370:4","text":"@notice Emitted when the protocol fee is changed by the pool\n @param feeProtocol0Old The previous value of the token0 protocol fee\n @param feeProtocol1Old The previous value of the token1 protocol fee\n @param feeProtocol0New The updated value of the token0 protocol fee\n @param feeProtocol1New The updated value of the token1 protocol fee"},"eventSelector":"973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133","id":275,"name":"SetFeeProtocol","nameLocation":"5350:14:4","nodeType":"EventDefinition","parameters":{"id":274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":267,"indexed":false,"mutability":"mutable","name":"feeProtocol0Old","nameLocation":"5371:15:4","nodeType":"VariableDeclaration","scope":275,"src":"5365:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":266,"name":"uint8","nodeType":"ElementaryTypeName","src":"5365:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":269,"indexed":false,"mutability":"mutable","name":"feeProtocol1Old","nameLocation":"5394:15:4","nodeType":"VariableDeclaration","scope":275,"src":"5388:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":268,"name":"uint8","nodeType":"ElementaryTypeName","src":"5388:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":271,"indexed":false,"mutability":"mutable","name":"feeProtocol0New","nameLocation":"5417:15:4","nodeType":"VariableDeclaration","scope":275,"src":"5411:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":270,"name":"uint8","nodeType":"ElementaryTypeName","src":"5411:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":273,"indexed":false,"mutability":"mutable","name":"feeProtocol1New","nameLocation":"5440:15:4","nodeType":"VariableDeclaration","scope":275,"src":"5434:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":272,"name":"uint8","nodeType":"ElementaryTypeName","src":"5434:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5364:92:4"},"src":"5344:113:4"},{"anonymous":false,"documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"5463:384:4","text":"@notice Emitted when the collected protocol fees are withdrawn by the factory owner\n @param sender The address that collects the protocol fees\n @param recipient The address that receives the collected protocol fees\n @param amount0 The amount of token0 protocol fees that is withdrawn\n @param amount0 The amount of token1 protocol fees that is withdrawn"},"eventSelector":"596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151","id":286,"name":"CollectProtocol","nameLocation":"5858:15:4","nodeType":"EventDefinition","parameters":{"id":285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"5890:6:4","nodeType":"VariableDeclaration","scope":286,"src":"5874:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"5874:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":280,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"5914:9:4","nodeType":"VariableDeclaration","scope":286,"src":"5898:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":279,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":282,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"5933:7:4","nodeType":"VariableDeclaration","scope":286,"src":"5925:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":281,"name":"uint128","nodeType":"ElementaryTypeName","src":"5925:7:4","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":284,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"5950:7:4","nodeType":"VariableDeclaration","scope":286,"src":"5942:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":283,"name":"uint128","nodeType":"ElementaryTypeName","src":"5942:7:4","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5873:85:4"},"src":"5852:107:4"}],"scope":288,"src":"159:5802:4","usedErrors":[]}],"src":"45:5917:4"},"id":4},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol","exportedSymbols":{"IAstraCLPoolImmutables":[327]},"id":328,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":289,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraCLPoolImmutables","contractDependencies":[],"contractKind":"interface","documentation":{"id":290,"nodeType":"StructuredDocumentation","src":"71:153:5","text":"@title Pool state that never changes\n @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values"},"fullyImplemented":false,"id":327,"linearizedBaseContracts":[327],"name":"IAstraCLPoolImmutables","nameLocation":"234:22:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":291,"nodeType":"StructuredDocumentation","src":"263:136:5","text":"@notice The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\n @return The contract address"},"functionSelector":"c45a0155","id":296,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nameLocation":"413:7:5","nodeType":"FunctionDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"420:2:5"},"returnParameters":{"id":295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":296,"src":"446:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"445:9:5"},"scope":327,"src":"404:51:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":297,"nodeType":"StructuredDocumentation","src":"461:113:5","text":"@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"0dfe1681","id":302,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nameLocation":"588:6:5","nodeType":"FunctionDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[],"src":"594:2:5"},"returnParameters":{"id":301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":302,"src":"620:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":299,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"619:9:5"},"scope":327,"src":"579:50:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"635:114:5","text":"@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"d21220a7","id":308,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nameLocation":"763:6:5","nodeType":"FunctionDefinition","parameters":{"id":304,"nodeType":"ParameterList","parameters":[],"src":"769:2:5"},"returnParameters":{"id":307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":308,"src":"795:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"795:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"794:9:5"},"scope":327,"src":"754:50:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":309,"nodeType":"StructuredDocumentation","src":"810:84:5","text":"@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"},"functionSelector":"ddca3f43","id":314,"implemented":false,"kind":"function","modifiers":[],"name":"fee","nameLocation":"908:3:5","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[],"src":"911:2:5"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":314,"src":"937:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":311,"name":"uint24","nodeType":"ElementaryTypeName","src":"937:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"936:8:5"},"scope":327,"src":"899:46:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":315,"nodeType":"StructuredDocumentation","src":"951:358:5","text":"@notice The pool tick spacing\n @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n This value is an int24 to avoid casting even though it is always positive.\n @return The tick spacing"},"functionSelector":"d0c93a7c","id":320,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nameLocation":"1323:11:5","nodeType":"FunctionDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[],"src":"1334:2:5"},"returnParameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":320,"src":"1360:5:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":317,"name":"int24","nodeType":"ElementaryTypeName","src":"1360:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1359:7:5"},"scope":327,"src":"1314:53:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":321,"nodeType":"StructuredDocumentation","src":"1373:363:5","text":"@notice The maximum amount of position liquidity that can use any tick in the range\n @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n @return The max amount of liquidity per tick"},"functionSelector":"70cf754a","id":326,"implemented":false,"kind":"function","modifiers":[],"name":"maxLiquidityPerTick","nameLocation":"1750:19:5","nodeType":"FunctionDefinition","parameters":{"id":322,"nodeType":"ParameterList","parameters":[],"src":"1769:2:5"},"returnParameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":326,"src":"1795:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":323,"name":"uint128","nodeType":"ElementaryTypeName","src":"1795:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1794:9:5"},"scope":327,"src":"1741:63:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":328,"src":"224:1582:5","usedErrors":[]}],"src":"45:1762:5"},"id":5},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol","exportedSymbols":{"IAstraCLPoolOwnerActions":[353]},"id":354,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":329,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraCLPoolOwnerActions","contractDependencies":[],"contractKind":"interface","documentation":{"id":330,"nodeType":"StructuredDocumentation","src":"71:116:6","text":"@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner"},"fullyImplemented":false,"id":353,"linearizedBaseContracts":[353],"name":"IAstraCLPoolOwnerActions","nameLocation":"197:24:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":331,"nodeType":"StructuredDocumentation","src":"228:205:6","text":"@notice Set the denominator of the protocol's % share of the fees\n @param feeProtocol0 new protocol fee for token0 of the pool\n @param feeProtocol1 new protocol fee for token1 of the pool"},"functionSelector":"8206a4d1","id":338,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeProtocol","nameLocation":"447:14:6","nodeType":"FunctionDefinition","parameters":{"id":336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"feeProtocol0","nameLocation":"468:12:6","nodeType":"VariableDeclaration","scope":338,"src":"462:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":332,"name":"uint8","nodeType":"ElementaryTypeName","src":"462:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":335,"mutability":"mutable","name":"feeProtocol1","nameLocation":"488:12:6","nodeType":"VariableDeclaration","scope":338,"src":"482:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":334,"name":"uint8","nodeType":"ElementaryTypeName","src":"482:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"461:40:6"},"returnParameters":{"id":337,"nodeType":"ParameterList","parameters":[],"src":"510:0:6"},"scope":353,"src":"438:73:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":339,"nodeType":"StructuredDocumentation","src":"517:483:6","text":"@notice Collect the protocol fee accrued to the pool\n @param recipient The address to which collected protocol fees should be sent\n @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n @return amount0 The protocol fee collected in token0\n @return amount1 The protocol fee collected in token1"},"functionSelector":"85b66729","id":352,"implemented":false,"kind":"function","modifiers":[],"name":"collectProtocol","nameLocation":"1014:15:6","nodeType":"FunctionDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":341,"mutability":"mutable","name":"recipient","nameLocation":"1047:9:6","nodeType":"VariableDeclaration","scope":352,"src":"1039:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":340,"name":"address","nodeType":"ElementaryTypeName","src":"1039:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":343,"mutability":"mutable","name":"amount0Requested","nameLocation":"1074:16:6","nodeType":"VariableDeclaration","scope":352,"src":"1066:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":342,"name":"uint128","nodeType":"ElementaryTypeName","src":"1066:7:6","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":345,"mutability":"mutable","name":"amount1Requested","nameLocation":"1108:16:6","nodeType":"VariableDeclaration","scope":352,"src":"1100:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":344,"name":"uint128","nodeType":"ElementaryTypeName","src":"1100:7:6","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1029:101:6"},"returnParameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"amount0","nameLocation":"1157:7:6","nodeType":"VariableDeclaration","scope":352,"src":"1149:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":347,"name":"uint128","nodeType":"ElementaryTypeName","src":"1149:7:6","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"amount1","nameLocation":"1174:7:6","nodeType":"VariableDeclaration","scope":352,"src":"1166:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":349,"name":"uint128","nodeType":"ElementaryTypeName","src":"1166:7:6","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1148:34:6"},"scope":353,"src":"1005:178:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":354,"src":"187:998:6","usedErrors":[]}],"src":"45:1141:6"},"id":6},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol","exportedSymbols":{"IAstraCLPoolState":[461]},"id":462,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":355,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraCLPoolState","contractDependencies":[],"contractKind":"interface","documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"71:169:7","text":"@title Pool state that can change\n @notice These methods compose the pool's state, and can change with any frequency including multiple times\n per transaction"},"fullyImplemented":false,"id":461,"linearizedBaseContracts":[461],"name":"IAstraCLPoolState","nameLocation":"250:17:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":357,"nodeType":"StructuredDocumentation","src":"274:1140:7","text":"@notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n when accessed externally.\n @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n tick The current tick of the pool, i.e. according to the last tick transition that was run.\n This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n boundary.\n observationIndex The index of the last oracle observation that was written,\n observationCardinality The current maximum number of observations stored in the pool,\n observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n feeProtocol The protocol fee for both tokens of the pool.\n Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n unlocked Whether the pool is currently locked to reentrancy"},"functionSelector":"3850c7bd","id":374,"implemented":false,"kind":"function","modifiers":[],"name":"slot0","nameLocation":"1428:5:7","nodeType":"FunctionDefinition","parameters":{"id":358,"nodeType":"ParameterList","parameters":[],"src":"1433:2:7"},"returnParameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"1504:12:7","nodeType":"VariableDeclaration","scope":374,"src":"1496:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":359,"name":"uint160","nodeType":"ElementaryTypeName","src":"1496:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"tick","nameLocation":"1536:4:7","nodeType":"VariableDeclaration","scope":374,"src":"1530:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":361,"name":"int24","nodeType":"ElementaryTypeName","src":"1530:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":364,"mutability":"mutable","name":"observationIndex","nameLocation":"1561:16:7","nodeType":"VariableDeclaration","scope":374,"src":"1554:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":363,"name":"uint16","nodeType":"ElementaryTypeName","src":"1554:6:7","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"observationCardinality","nameLocation":"1598:22:7","nodeType":"VariableDeclaration","scope":374,"src":"1591:29:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":365,"name":"uint16","nodeType":"ElementaryTypeName","src":"1591:6:7","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":368,"mutability":"mutable","name":"observationCardinalityNext","nameLocation":"1641:26:7","nodeType":"VariableDeclaration","scope":374,"src":"1634:33:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":367,"name":"uint16","nodeType":"ElementaryTypeName","src":"1634:6:7","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":370,"mutability":"mutable","name":"feeProtocol","nameLocation":"1687:11:7","nodeType":"VariableDeclaration","scope":374,"src":"1681:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":369,"name":"uint8","nodeType":"ElementaryTypeName","src":"1681:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"unlocked","nameLocation":"1717:8:7","nodeType":"VariableDeclaration","scope":374,"src":"1712:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":371,"name":"bool","nodeType":"ElementaryTypeName","src":"1712:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:253:7"},"scope":461,"src":"1419:317:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":375,"nodeType":"StructuredDocumentation","src":"1742:168:7","text":"@notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"f3058399","id":380,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal0X128","nameLocation":"1924:20:7","nodeType":"FunctionDefinition","parameters":{"id":376,"nodeType":"ParameterList","parameters":[],"src":"1944:2:7"},"returnParameters":{"id":379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"1970:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":377,"name":"uint256","nodeType":"ElementaryTypeName","src":"1970:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1969:9:7"},"scope":461,"src":"1915:64:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"1985:168:7","text":"@notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"46141319","id":386,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal1X128","nameLocation":"2167:20:7","nodeType":"FunctionDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"2187:2:7"},"returnParameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":386,"src":"2213:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":383,"name":"uint256","nodeType":"ElementaryTypeName","src":"2213:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2212:9:7"},"scope":461,"src":"2158:64:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":387,"nodeType":"StructuredDocumentation","src":"2228:147:7","text":"@notice The amounts of token0 and token1 that are owed to the protocol\n @dev Protocol fees will never exceed uint128 max in either token"},"functionSelector":"1ad8b03b","id":394,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFees","nameLocation":"2389:12:7","nodeType":"FunctionDefinition","parameters":{"id":388,"nodeType":"ParameterList","parameters":[],"src":"2401:2:7"},"returnParameters":{"id":393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":390,"mutability":"mutable","name":"token0","nameLocation":"2435:6:7","nodeType":"VariableDeclaration","scope":394,"src":"2427:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":389,"name":"uint128","nodeType":"ElementaryTypeName","src":"2427:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"token1","nameLocation":"2451:6:7","nodeType":"VariableDeclaration","scope":394,"src":"2443:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":391,"name":"uint128","nodeType":"ElementaryTypeName","src":"2443:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2426:32:7"},"scope":461,"src":"2380:79:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":395,"nodeType":"StructuredDocumentation","src":"2465:150:7","text":"@notice The currently in range liquidity available to the pool\n @dev This value has no relationship to the total liquidity across all ticks"},"functionSelector":"1a686502","id":400,"implemented":false,"kind":"function","modifiers":[],"name":"liquidity","nameLocation":"2629:9:7","nodeType":"FunctionDefinition","parameters":{"id":396,"nodeType":"ParameterList","parameters":[],"src":"2638:2:7"},"returnParameters":{"id":399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":400,"src":"2664:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":397,"name":"uint128","nodeType":"ElementaryTypeName","src":"2664:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2663:9:7"},"scope":461,"src":"2620:53:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":401,"nodeType":"StructuredDocumentation","src":"2679:1244:7","text":"@notice Look up information about a specific tick in the pool\n @param tick The tick to look up\n @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n tick upper,\n liquidityNet how much liquidity changes when the pool price crosses the tick,\n feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n secondsOutside the seconds spent on the other side of the tick from the current tick,\n initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n In addition, these values are only relative and must be used only in comparison to previous snapshots for\n a specific position."},"functionSelector":"f30dba93","id":422,"implemented":false,"kind":"function","modifiers":[],"name":"ticks","nameLocation":"3937:5:7","nodeType":"FunctionDefinition","parameters":{"id":404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":403,"mutability":"mutable","name":"tick","nameLocation":"3958:4:7","nodeType":"VariableDeclaration","scope":422,"src":"3952:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":402,"name":"int24","nodeType":"ElementaryTypeName","src":"3952:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3942:26:7"},"returnParameters":{"id":421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"liquidityGross","nameLocation":"4037:14:7","nodeType":"VariableDeclaration","scope":422,"src":"4029:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":405,"name":"uint128","nodeType":"ElementaryTypeName","src":"4029:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":408,"mutability":"mutable","name":"liquidityNet","nameLocation":"4072:12:7","nodeType":"VariableDeclaration","scope":422,"src":"4065:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":407,"name":"int128","nodeType":"ElementaryTypeName","src":"4065:6:7","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":410,"mutability":"mutable","name":"feeGrowthOutside0X128","nameLocation":"4106:21:7","nodeType":"VariableDeclaration","scope":422,"src":"4098:29:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":409,"name":"uint256","nodeType":"ElementaryTypeName","src":"4098:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":412,"mutability":"mutable","name":"feeGrowthOutside1X128","nameLocation":"4149:21:7","nodeType":"VariableDeclaration","scope":422,"src":"4141:29:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":411,"name":"uint256","nodeType":"ElementaryTypeName","src":"4141:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":414,"mutability":"mutable","name":"tickCumulativeOutside","nameLocation":"4190:21:7","nodeType":"VariableDeclaration","scope":422,"src":"4184:27:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":413,"name":"int56","nodeType":"ElementaryTypeName","src":"4184:5:7","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":416,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nameLocation":"4233:30:7","nodeType":"VariableDeclaration","scope":422,"src":"4225:38:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":415,"name":"uint160","nodeType":"ElementaryTypeName","src":"4225:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":418,"mutability":"mutable","name":"secondsOutside","nameLocation":"4284:14:7","nodeType":"VariableDeclaration","scope":422,"src":"4277:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":417,"name":"uint32","nodeType":"ElementaryTypeName","src":"4277:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":420,"mutability":"mutable","name":"initialized","nameLocation":"4317:11:7","nodeType":"VariableDeclaration","scope":422,"src":"4312:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":419,"name":"bool","nodeType":"ElementaryTypeName","src":"4312:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4015:323:7"},"scope":461,"src":"3928:411:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":423,"nodeType":"StructuredDocumentation","src":"4345:99:7","text":"@notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"functionSelector":"5339c296","id":430,"implemented":false,"kind":"function","modifiers":[],"name":"tickBitmap","nameLocation":"4458:10:7","nodeType":"FunctionDefinition","parameters":{"id":426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":425,"mutability":"mutable","name":"wordPosition","nameLocation":"4475:12:7","nodeType":"VariableDeclaration","scope":430,"src":"4469:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":424,"name":"int16","nodeType":"ElementaryTypeName","src":"4469:5:7","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"4468:20:7"},"returnParameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"4512:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":427,"name":"uint256","nodeType":"ElementaryTypeName","src":"4512:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:9:7"},"scope":461,"src":"4449:72:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":431,"nodeType":"StructuredDocumentation","src":"4527:700:7","text":"@notice Returns the information about a position by the position's key\n @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n @return _liquidity The amount of liquidity in the position,\n Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke"},"functionSelector":"514ea4bf","id":446,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nameLocation":"5241:9:7","nodeType":"FunctionDefinition","parameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"mutability":"mutable","name":"key","nameLocation":"5268:3:7","nodeType":"VariableDeclaration","scope":446,"src":"5260:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":432,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5260:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5250:27:7"},"returnParameters":{"id":445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":436,"mutability":"mutable","name":"_liquidity","nameLocation":"5346:10:7","nodeType":"VariableDeclaration","scope":446,"src":"5338:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":435,"name":"uint128","nodeType":"ElementaryTypeName","src":"5338:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":438,"mutability":"mutable","name":"feeGrowthInside0LastX128","nameLocation":"5378:24:7","nodeType":"VariableDeclaration","scope":446,"src":"5370:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":437,"name":"uint256","nodeType":"ElementaryTypeName","src":"5370:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":440,"mutability":"mutable","name":"feeGrowthInside1LastX128","nameLocation":"5424:24:7","nodeType":"VariableDeclaration","scope":446,"src":"5416:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":439,"name":"uint256","nodeType":"ElementaryTypeName","src":"5416:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"tokensOwed0","nameLocation":"5470:11:7","nodeType":"VariableDeclaration","scope":446,"src":"5462:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":441,"name":"uint128","nodeType":"ElementaryTypeName","src":"5462:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":444,"mutability":"mutable","name":"tokensOwed1","nameLocation":"5503:11:7","nodeType":"VariableDeclaration","scope":446,"src":"5495:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":443,"name":"uint128","nodeType":"ElementaryTypeName","src":"5495:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5324:200:7"},"scope":461,"src":"5232:293:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":447,"nodeType":"StructuredDocumentation","src":"5531:749:7","text":"@notice Returns data about a specific observation index\n @param index The element of the observations array to fetch\n @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n ago, rather than at a specific index in the array.\n @return blockTimestamp The timestamp of the observation,\n Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n Returns initialized whether the observation has been initialized and the values are safe to use"},"functionSelector":"252c09d7","id":460,"implemented":false,"kind":"function","modifiers":[],"name":"observations","nameLocation":"6294:12:7","nodeType":"FunctionDefinition","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":449,"mutability":"mutable","name":"index","nameLocation":"6324:5:7","nodeType":"VariableDeclaration","scope":460,"src":"6316:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"6316:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6306:29:7"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"blockTimestamp","nameLocation":"6403:14:7","nodeType":"VariableDeclaration","scope":460,"src":"6396:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":451,"name":"uint32","nodeType":"ElementaryTypeName","src":"6396:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":454,"mutability":"mutable","name":"tickCumulative","nameLocation":"6437:14:7","nodeType":"VariableDeclaration","scope":460,"src":"6431:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":453,"name":"int56","nodeType":"ElementaryTypeName","src":"6431:5:7","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":456,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nameLocation":"6473:33:7","nodeType":"VariableDeclaration","scope":460,"src":"6465:41:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":455,"name":"uint160","nodeType":"ElementaryTypeName","src":"6465:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"initialized","nameLocation":"6525:11:7","nodeType":"VariableDeclaration","scope":460,"src":"6520:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":457,"name":"bool","nodeType":"ElementaryTypeName","src":"6520:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6382:164:7"},"scope":461,"src":"6285:262:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":462,"src":"240:6309:7","usedErrors":[]}],"src":"45:6505:7"},"id":7},"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","exportedSymbols":{"SafeCast":[531]},"id":532,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":463,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"71:94:8","text":"@title Safe casting methods\n @notice Contains methods for safely casting between types"},"fullyImplemented":true,"id":531,"linearizedBaseContracts":[531],"name":"SafeCast","nameLocation":"173:8:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":484,"nodeType":"Block","src":"421:47:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":473,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"440:1:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":476,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"452:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"444:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":474,"name":"uint160","nodeType":"ElementaryTypeName","src":"444:7:8","typeDescriptions":{}}},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"444:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"440:14:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"439:16:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":480,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"459:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"439:21:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"431:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"431:30:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":483,"nodeType":"ExpressionStatement","src":"431:30:8"}]},"documentation":{"id":465,"nodeType":"StructuredDocumentation","src":"188:164:8","text":"@notice Cast a uint256 to a uint160, revert on overflow\n @param y The uint256 to be downcasted\n @return z The downcasted integer, now type uint160"},"id":485,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"366:9:8","nodeType":"FunctionDefinition","parameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"y","nameLocation":"384:1:8","nodeType":"VariableDeclaration","scope":485,"src":"376:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":466,"name":"uint256","nodeType":"ElementaryTypeName","src":"376:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"375:11:8"},"returnParameters":{"id":471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"z","nameLocation":"418:1:8","nodeType":"VariableDeclaration","scope":485,"src":"410:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":469,"name":"uint160","nodeType":"ElementaryTypeName","src":"410:7:8","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"409:11:8"},"scope":531,"src":"357:111:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":505,"nodeType":"Block","src":"713:46:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":494,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"732:1:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":497,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"743:1:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":495,"name":"int128","nodeType":"ElementaryTypeName","src":"736:6:8","typeDescriptions":{}}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:9:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"732:13:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"731:15:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":501,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"750:1:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"731:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":493,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"723:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"723:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"ExpressionStatement","src":"723:29:8"}]},"documentation":{"id":486,"nodeType":"StructuredDocumentation","src":"474:173:8","text":"@notice Cast a int256 to a int128, revert on overflow or underflow\n @param y The int256 to be downcasted\n @return z The downcasted integer, now type int128"},"id":506,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"661:8:8","nodeType":"FunctionDefinition","parameters":{"id":489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":488,"mutability":"mutable","name":"y","nameLocation":"677:1:8","nodeType":"VariableDeclaration","scope":506,"src":"670:8:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":487,"name":"int256","nodeType":"ElementaryTypeName","src":"670:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"669:10:8"},"returnParameters":{"id":492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":491,"mutability":"mutable","name":"z","nameLocation":"710:1:8","nodeType":"VariableDeclaration","scope":506,"src":"703:8:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":490,"name":"int128","nodeType":"ElementaryTypeName","src":"703:6:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"702:10:8"},"scope":531,"src":"652:107:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":529,"nodeType":"Block","src":"986:61:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":509,"src":"1004:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1008:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1013:3:8","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1008:8:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"src":"1004:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":514,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"996:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"996:21:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":521,"nodeType":"ExpressionStatement","src":"996:21:8"},{"expression":{"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":522,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":512,"src":"1027:1:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":525,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":509,"src":"1038:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1031:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":523,"name":"int256","nodeType":"ElementaryTypeName","src":"1031:6:8","typeDescriptions":{}}},"id":526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1031:9:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1027:13:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":528,"nodeType":"ExpressionStatement","src":"1027:13:8"}]},"documentation":{"id":507,"nodeType":"StructuredDocumentation","src":"765:154:8","text":"@notice Cast a uint256 to a int256, revert on overflow\n @param y The uint256 to be casted\n @return z The casted integer, now type int256"},"id":530,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"933:8:8","nodeType":"FunctionDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"y","nameLocation":"950:1:8","nodeType":"VariableDeclaration","scope":530,"src":"942:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":508,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"941:11:8"},"returnParameters":{"id":513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":512,"mutability":"mutable","name":"z","nameLocation":"983:1:8","nodeType":"VariableDeclaration","scope":530,"src":"976:8:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":511,"name":"int256","nodeType":"ElementaryTypeName","src":"976:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"975:10:8"},"scope":531,"src":"924:123:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":532,"src":"165:884:8","usedErrors":[]}],"src":"45:1005:8"},"id":8},"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol":{"ast":{"absolutePath":"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol","exportedSymbols":{"IAstraPair":[773]},"id":774,"nodeType":"SourceUnit","nodes":[{"id":533,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IAstraPair","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":773,"linearizedBaseContracts":[773],"name":"IAstraPair","nameLocation":"36:10:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":541,"name":"Approval","nameLocation":"59:8:9","nodeType":"EventDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":535,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"84:5:9","nodeType":"VariableDeclaration","scope":541,"src":"68:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":534,"name":"address","nodeType":"ElementaryTypeName","src":"68:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":537,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"107:7:9","nodeType":"VariableDeclaration","scope":541,"src":"91:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"91:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":539,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"121:5:9","nodeType":"VariableDeclaration","scope":541,"src":"116:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":538,"name":"uint","nodeType":"ElementaryTypeName","src":"116:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"67:60:9"},"src":"53:75:9"},{"anonymous":false,"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":549,"name":"Transfer","nameLocation":"139:8:9","nodeType":"EventDefinition","parameters":{"id":548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":543,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"164:4:9","nodeType":"VariableDeclaration","scope":549,"src":"148:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":542,"name":"address","nodeType":"ElementaryTypeName","src":"148:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":545,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"186:2:9","nodeType":"VariableDeclaration","scope":549,"src":"170:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"170:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":547,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"195:5:9","nodeType":"VariableDeclaration","scope":549,"src":"190:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":546,"name":"uint","nodeType":"ElementaryTypeName","src":"190:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"147:54:9"},"src":"133:69:9"},{"functionSelector":"06fdde03","id":554,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"217:4:9","nodeType":"FunctionDefinition","parameters":{"id":550,"nodeType":"ParameterList","parameters":[],"src":"221:2:9"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":554,"src":"247:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":551,"name":"string","nodeType":"ElementaryTypeName","src":"247:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"246:15:9"},"scope":773,"src":"208:54:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"95d89b41","id":559,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"276:6:9","nodeType":"FunctionDefinition","parameters":{"id":555,"nodeType":"ParameterList","parameters":[],"src":"282:2:9"},"returnParameters":{"id":558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":559,"src":"308:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":556,"name":"string","nodeType":"ElementaryTypeName","src":"308:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"307:15:9"},"scope":773,"src":"267:56:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":564,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"337:8:9","nodeType":"FunctionDefinition","parameters":{"id":560,"nodeType":"ParameterList","parameters":[],"src":"345:2:9"},"returnParameters":{"id":563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":564,"src":"371:5:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":561,"name":"uint8","nodeType":"ElementaryTypeName","src":"371:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"370:7:9"},"scope":773,"src":"328:50:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":569,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"392:11:9","nodeType":"FunctionDefinition","parameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"403:2:9"},"returnParameters":{"id":568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":569,"src":"429:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":566,"name":"uint","nodeType":"ElementaryTypeName","src":"429:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"428:6:9"},"scope":773,"src":"383:52:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":576,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"449:9:9","nodeType":"FunctionDefinition","parameters":{"id":572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":571,"mutability":"mutable","name":"owner","nameLocation":"467:5:9","nodeType":"VariableDeclaration","scope":576,"src":"459:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"459:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"458:15:9"},"returnParameters":{"id":575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":576,"src":"497:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":573,"name":"uint","nodeType":"ElementaryTypeName","src":"497:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"496:6:9"},"scope":773,"src":"440:63:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dd62ed3e","id":585,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"517:9:9","nodeType":"FunctionDefinition","parameters":{"id":581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":578,"mutability":"mutable","name":"owner","nameLocation":"535:5:9","nodeType":"VariableDeclaration","scope":585,"src":"527:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":577,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":580,"mutability":"mutable","name":"spender","nameLocation":"550:7:9","nodeType":"VariableDeclaration","scope":585,"src":"542:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":579,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"526:32:9"},"returnParameters":{"id":584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":585,"src":"582:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":582,"name":"uint","nodeType":"ElementaryTypeName","src":"582:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"581:6:9"},"scope":773,"src":"508:80:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":594,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"603:7:9","nodeType":"FunctionDefinition","parameters":{"id":590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":587,"mutability":"mutable","name":"spender","nameLocation":"619:7:9","nodeType":"VariableDeclaration","scope":594,"src":"611:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"611:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":589,"mutability":"mutable","name":"value","nameLocation":"633:5:9","nodeType":"VariableDeclaration","scope":594,"src":"628:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":588,"name":"uint","nodeType":"ElementaryTypeName","src":"628:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"610:29:9"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":594,"src":"658:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":591,"name":"bool","nodeType":"ElementaryTypeName","src":"658:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"657:6:9"},"scope":773,"src":"594:70:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":603,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"678:8:9","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":596,"mutability":"mutable","name":"to","nameLocation":"695:2:9","nodeType":"VariableDeclaration","scope":603,"src":"687:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":595,"name":"address","nodeType":"ElementaryTypeName","src":"687:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":598,"mutability":"mutable","name":"value","nameLocation":"704:5:9","nodeType":"VariableDeclaration","scope":603,"src":"699:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":597,"name":"uint","nodeType":"ElementaryTypeName","src":"699:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"686:24:9"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":603,"src":"729:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":600,"name":"bool","nodeType":"ElementaryTypeName","src":"729:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"728:6:9"},"scope":773,"src":"669:66:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":614,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"749:12:9","nodeType":"FunctionDefinition","parameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"mutability":"mutable","name":"from","nameLocation":"770:4:9","nodeType":"VariableDeclaration","scope":614,"src":"762:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":604,"name":"address","nodeType":"ElementaryTypeName","src":"762:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"to","nameLocation":"784:2:9","nodeType":"VariableDeclaration","scope":614,"src":"776:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":609,"mutability":"mutable","name":"value","nameLocation":"793:5:9","nodeType":"VariableDeclaration","scope":614,"src":"788:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":608,"name":"uint","nodeType":"ElementaryTypeName","src":"788:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"761:38:9"},"returnParameters":{"id":613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":612,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":614,"src":"818:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":611,"name":"bool","nodeType":"ElementaryTypeName","src":"818:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"817:6:9"},"scope":773,"src":"740:84:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3644e515","id":619,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"839:16:9","nodeType":"FunctionDefinition","parameters":{"id":615,"nodeType":"ParameterList","parameters":[],"src":"855:2:9"},"returnParameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":619,"src":"881:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":616,"name":"bytes32","nodeType":"ElementaryTypeName","src":"881:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"880:9:9"},"scope":773,"src":"830:60:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"30adf81f","id":624,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nameLocation":"904:15:9","nodeType":"FunctionDefinition","parameters":{"id":620,"nodeType":"ParameterList","parameters":[],"src":"919:2:9"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":624,"src":"945:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"945:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"944:9:9"},"scope":773,"src":"895:59:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"7ecebe00","id":631,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"968:6:9","nodeType":"FunctionDefinition","parameters":{"id":627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":626,"mutability":"mutable","name":"owner","nameLocation":"983:5:9","nodeType":"VariableDeclaration","scope":631,"src":"975:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":625,"name":"address","nodeType":"ElementaryTypeName","src":"975:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"974:15:9"},"returnParameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":631,"src":"1013:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":628,"name":"uint","nodeType":"ElementaryTypeName","src":"1013:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1012:6:9"},"scope":773,"src":"959:60:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d505accf","id":648,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1034:6:9","nodeType":"FunctionDefinition","parameters":{"id":646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":633,"mutability":"mutable","name":"owner","nameLocation":"1049:5:9","nodeType":"VariableDeclaration","scope":648,"src":"1041:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":632,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":635,"mutability":"mutable","name":"spender","nameLocation":"1064:7:9","nodeType":"VariableDeclaration","scope":648,"src":"1056:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":634,"name":"address","nodeType":"ElementaryTypeName","src":"1056:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"value","nameLocation":"1078:5:9","nodeType":"VariableDeclaration","scope":648,"src":"1073:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":636,"name":"uint","nodeType":"ElementaryTypeName","src":"1073:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":639,"mutability":"mutable","name":"deadline","nameLocation":"1090:8:9","nodeType":"VariableDeclaration","scope":648,"src":"1085:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint","nodeType":"ElementaryTypeName","src":"1085:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":641,"mutability":"mutable","name":"v","nameLocation":"1106:1:9","nodeType":"VariableDeclaration","scope":648,"src":"1100:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":640,"name":"uint8","nodeType":"ElementaryTypeName","src":"1100:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":643,"mutability":"mutable","name":"r","nameLocation":"1117:1:9","nodeType":"VariableDeclaration","scope":648,"src":"1109:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":645,"mutability":"mutable","name":"s","nameLocation":"1128:1:9","nodeType":"VariableDeclaration","scope":648,"src":"1120:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1120:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1040:90:9"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"1139:0:9"},"scope":773,"src":"1025:115:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f","id":656,"name":"Mint","nameLocation":"1152:4:9","nodeType":"EventDefinition","parameters":{"id":655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":650,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1173:6:9","nodeType":"VariableDeclaration","scope":656,"src":"1157:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":649,"name":"address","nodeType":"ElementaryTypeName","src":"1157:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":652,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"1186:7:9","nodeType":"VariableDeclaration","scope":656,"src":"1181:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":651,"name":"uint","nodeType":"ElementaryTypeName","src":"1181:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":654,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"1200:7:9","nodeType":"VariableDeclaration","scope":656,"src":"1195:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":653,"name":"uint","nodeType":"ElementaryTypeName","src":"1195:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:52:9"},"src":"1146:63:9"},{"anonymous":false,"eventSelector":"dccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496","id":666,"name":"Burn","nameLocation":"1220:4:9","nodeType":"EventDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":658,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1241:6:9","nodeType":"VariableDeclaration","scope":666,"src":"1225:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":657,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":660,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"1254:7:9","nodeType":"VariableDeclaration","scope":666,"src":"1249:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":659,"name":"uint","nodeType":"ElementaryTypeName","src":"1249:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":662,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"1268:7:9","nodeType":"VariableDeclaration","scope":666,"src":"1263:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":661,"name":"uint","nodeType":"ElementaryTypeName","src":"1263:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":664,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"1293:2:9","nodeType":"VariableDeclaration","scope":666,"src":"1277:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":663,"name":"address","nodeType":"ElementaryTypeName","src":"1277:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1224:72:9"},"src":"1214:83:9"},{"anonymous":false,"eventSelector":"d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822","id":680,"name":"Swap","nameLocation":"1308:4:9","nodeType":"EventDefinition","parameters":{"id":679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":668,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1338:6:9","nodeType":"VariableDeclaration","scope":680,"src":"1322:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":667,"name":"address","nodeType":"ElementaryTypeName","src":"1322:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":670,"indexed":false,"mutability":"mutable","name":"amount0In","nameLocation":"1359:9:9","nodeType":"VariableDeclaration","scope":680,"src":"1354:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint","nodeType":"ElementaryTypeName","src":"1354:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":672,"indexed":false,"mutability":"mutable","name":"amount1In","nameLocation":"1383:9:9","nodeType":"VariableDeclaration","scope":680,"src":"1378:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":671,"name":"uint","nodeType":"ElementaryTypeName","src":"1378:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":674,"indexed":false,"mutability":"mutable","name":"amount0Out","nameLocation":"1407:10:9","nodeType":"VariableDeclaration","scope":680,"src":"1402:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint","nodeType":"ElementaryTypeName","src":"1402:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":676,"indexed":false,"mutability":"mutable","name":"amount1Out","nameLocation":"1432:10:9","nodeType":"VariableDeclaration","scope":680,"src":"1427:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint","nodeType":"ElementaryTypeName","src":"1427:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":678,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"1468:2:9","nodeType":"VariableDeclaration","scope":680,"src":"1452:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":677,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1312:164:9"},"src":"1302:175:9"},{"anonymous":false,"eventSelector":"1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1","id":686,"name":"Sync","nameLocation":"1488:4:9","nodeType":"EventDefinition","parameters":{"id":685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"indexed":false,"mutability":"mutable","name":"reserve0","nameLocation":"1501:8:9","nodeType":"VariableDeclaration","scope":686,"src":"1493:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":681,"name":"uint112","nodeType":"ElementaryTypeName","src":"1493:7:9","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":684,"indexed":false,"mutability":"mutable","name":"reserve1","nameLocation":"1519:8:9","nodeType":"VariableDeclaration","scope":686,"src":"1511:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":683,"name":"uint112","nodeType":"ElementaryTypeName","src":"1511:7:9","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"1492:36:9"},"src":"1482:47:9"},{"functionSelector":"ba9a7a56","id":691,"implemented":false,"kind":"function","modifiers":[],"name":"MINIMUM_LIQUIDITY","nameLocation":"1544:17:9","nodeType":"FunctionDefinition","parameters":{"id":687,"nodeType":"ParameterList","parameters":[],"src":"1561:2:9"},"returnParameters":{"id":690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":691,"src":"1587:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":688,"name":"uint","nodeType":"ElementaryTypeName","src":"1587:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1586:6:9"},"scope":773,"src":"1535:58:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"c45a0155","id":696,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nameLocation":"1607:7:9","nodeType":"FunctionDefinition","parameters":{"id":692,"nodeType":"ParameterList","parameters":[],"src":"1614:2:9"},"returnParameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":696,"src":"1640:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":693,"name":"address","nodeType":"ElementaryTypeName","src":"1640:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1639:9:9"},"scope":773,"src":"1598:51:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0dfe1681","id":701,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nameLocation":"1663:6:9","nodeType":"FunctionDefinition","parameters":{"id":697,"nodeType":"ParameterList","parameters":[],"src":"1669:2:9"},"returnParameters":{"id":700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"1695:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1694:9:9"},"scope":773,"src":"1654:50:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d21220a7","id":706,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nameLocation":"1718:6:9","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[],"src":"1724:2:9"},"returnParameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":706,"src":"1750:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":703,"name":"address","nodeType":"ElementaryTypeName","src":"1750:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1749:9:9"},"scope":773,"src":"1709:50:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0902f1ac","id":715,"implemented":false,"kind":"function","modifiers":[],"name":"getReserves","nameLocation":"1773:11:9","nodeType":"FunctionDefinition","parameters":{"id":707,"nodeType":"ParameterList","parameters":[],"src":"1784:2:9"},"returnParameters":{"id":714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":709,"mutability":"mutable","name":"reserve0","nameLocation":"1818:8:9","nodeType":"VariableDeclaration","scope":715,"src":"1810:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":708,"name":"uint112","nodeType":"ElementaryTypeName","src":"1810:7:9","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":711,"mutability":"mutable","name":"reserve1","nameLocation":"1836:8:9","nodeType":"VariableDeclaration","scope":715,"src":"1828:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":710,"name":"uint112","nodeType":"ElementaryTypeName","src":"1828:7:9","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":713,"mutability":"mutable","name":"blockTimestampLast","nameLocation":"1853:18:9","nodeType":"VariableDeclaration","scope":715,"src":"1846:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":712,"name":"uint32","nodeType":"ElementaryTypeName","src":"1846:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1809:63:9"},"scope":773,"src":"1764:109:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5909c0d5","id":720,"implemented":false,"kind":"function","modifiers":[],"name":"price0CumulativeLast","nameLocation":"1887:20:9","nodeType":"FunctionDefinition","parameters":{"id":716,"nodeType":"ParameterList","parameters":[],"src":"1907:2:9"},"returnParameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":720,"src":"1933:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":717,"name":"uint","nodeType":"ElementaryTypeName","src":"1933:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1932:6:9"},"scope":773,"src":"1878:61:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5a3d5493","id":725,"implemented":false,"kind":"function","modifiers":[],"name":"price1CumulativeLast","nameLocation":"1953:20:9","nodeType":"FunctionDefinition","parameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"1973:2:9"},"returnParameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":725,"src":"1999:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":722,"name":"uint","nodeType":"ElementaryTypeName","src":"1999:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1998:6:9"},"scope":773,"src":"1944:61:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7464fc3d","id":730,"implemented":false,"kind":"function","modifiers":[],"name":"kLast","nameLocation":"2019:5:9","nodeType":"FunctionDefinition","parameters":{"id":726,"nodeType":"ParameterList","parameters":[],"src":"2024:2:9"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":730,"src":"2050:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":727,"name":"uint","nodeType":"ElementaryTypeName","src":"2050:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2049:6:9"},"scope":773,"src":"2010:46:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6a627842","id":737,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"2071:4:9","nodeType":"FunctionDefinition","parameters":{"id":733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":732,"mutability":"mutable","name":"to","nameLocation":"2084:2:9","nodeType":"VariableDeclaration","scope":737,"src":"2076:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":731,"name":"address","nodeType":"ElementaryTypeName","src":"2076:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2075:12:9"},"returnParameters":{"id":736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":735,"mutability":"mutable","name":"liquidity","nameLocation":"2111:9:9","nodeType":"VariableDeclaration","scope":737,"src":"2106:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":734,"name":"uint","nodeType":"ElementaryTypeName","src":"2106:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2105:16:9"},"scope":773,"src":"2062:60:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"89afcb44","id":746,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"2136:4:9","nodeType":"FunctionDefinition","parameters":{"id":740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":739,"mutability":"mutable","name":"to","nameLocation":"2149:2:9","nodeType":"VariableDeclaration","scope":746,"src":"2141:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":738,"name":"address","nodeType":"ElementaryTypeName","src":"2141:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2140:12:9"},"returnParameters":{"id":745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":742,"mutability":"mutable","name":"amount0","nameLocation":"2176:7:9","nodeType":"VariableDeclaration","scope":746,"src":"2171:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":741,"name":"uint","nodeType":"ElementaryTypeName","src":"2171:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":744,"mutability":"mutable","name":"amount1","nameLocation":"2190:7:9","nodeType":"VariableDeclaration","scope":746,"src":"2185:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":743,"name":"uint","nodeType":"ElementaryTypeName","src":"2185:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2170:28:9"},"scope":773,"src":"2127:72:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"022c0d9f","id":757,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"2213:4:9","nodeType":"FunctionDefinition","parameters":{"id":755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":748,"mutability":"mutable","name":"amount0Out","nameLocation":"2223:10:9","nodeType":"VariableDeclaration","scope":757,"src":"2218:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":747,"name":"uint","nodeType":"ElementaryTypeName","src":"2218:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":750,"mutability":"mutable","name":"amount1Out","nameLocation":"2240:10:9","nodeType":"VariableDeclaration","scope":757,"src":"2235:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":749,"name":"uint","nodeType":"ElementaryTypeName","src":"2235:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":752,"mutability":"mutable","name":"to","nameLocation":"2260:2:9","nodeType":"VariableDeclaration","scope":757,"src":"2252:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":751,"name":"address","nodeType":"ElementaryTypeName","src":"2252:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"data","nameLocation":"2279:4:9","nodeType":"VariableDeclaration","scope":757,"src":"2264:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":753,"name":"bytes","nodeType":"ElementaryTypeName","src":"2264:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2217:67:9"},"returnParameters":{"id":756,"nodeType":"ParameterList","parameters":[],"src":"2293:0:9"},"scope":773,"src":"2204:90:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bc25cf77","id":762,"implemented":false,"kind":"function","modifiers":[],"name":"skim","nameLocation":"2308:4:9","nodeType":"FunctionDefinition","parameters":{"id":760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":759,"mutability":"mutable","name":"to","nameLocation":"2321:2:9","nodeType":"VariableDeclaration","scope":762,"src":"2313:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":758,"name":"address","nodeType":"ElementaryTypeName","src":"2313:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2312:12:9"},"returnParameters":{"id":761,"nodeType":"ParameterList","parameters":[],"src":"2333:0:9"},"scope":773,"src":"2299:35:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fff6cae9","id":765,"implemented":false,"kind":"function","modifiers":[],"name":"sync","nameLocation":"2348:4:9","nodeType":"FunctionDefinition","parameters":{"id":763,"nodeType":"ParameterList","parameters":[],"src":"2352:2:9"},"returnParameters":{"id":764,"nodeType":"ParameterList","parameters":[],"src":"2363:0:9"},"scope":773,"src":"2339:25:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"485cc955","id":772,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"2379:10:9","nodeType":"FunctionDefinition","parameters":{"id":770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":772,"src":"2390:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":766,"name":"address","nodeType":"ElementaryTypeName","src":"2390:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":772,"src":"2399:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":768,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2389:18:9"},"returnParameters":{"id":771,"nodeType":"ParameterList","parameters":[],"src":"2416:0:9"},"scope":773,"src":"2370:47:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":774,"src":"26:2393:9","usedErrors":[]}],"src":"0:2420:9"},"id":9},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","exportedSymbols":{"IERC1155Receiver":[814],"IERC165":[922]},"id":815,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":775,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:10"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":776,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":815,"sourceUnit":923,"src":"143:47:10","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":778,"name":"IERC165","nameLocations":["262:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":922,"src":"262:7:10"},"id":779,"nodeType":"InheritanceSpecifier","src":"262:7:10"}],"canonicalName":"IERC1155Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":777,"nodeType":"StructuredDocumentation","src":"192:39:10","text":" @dev _Available since v3.1._"},"fullyImplemented":false,"id":814,"linearizedBaseContracts":[814,922],"name":"IERC1155Receiver","nameLocation":"242:16:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":780,"nodeType":"StructuredDocumentation","src":"276:826:10","text":" @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"},"functionSelector":"f23a6e61","id":795,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"1116:17:10","nodeType":"FunctionDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":782,"mutability":"mutable","name":"operator","nameLocation":"1151:8:10","nodeType":"VariableDeclaration","scope":795,"src":"1143:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":781,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":784,"mutability":"mutable","name":"from","nameLocation":"1177:4:10","nodeType":"VariableDeclaration","scope":795,"src":"1169:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"id","nameLocation":"1199:2:10","nodeType":"VariableDeclaration","scope":795,"src":"1191:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":785,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"value","nameLocation":"1219:5:10","nodeType":"VariableDeclaration","scope":795,"src":"1211:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":787,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"data","nameLocation":"1249:4:10","nodeType":"VariableDeclaration","scope":795,"src":"1234:19:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":789,"name":"bytes","nodeType":"ElementaryTypeName","src":"1234:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1133:126:10"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":795,"src":"1278:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":792,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1278:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1277:8:10"},"scope":814,"src":"1107:179:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":796,"nodeType":"StructuredDocumentation","src":"1292:994:10","text":" @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"},"functionSelector":"bc197c81","id":813,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2300:22:10","nodeType":"FunctionDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":798,"mutability":"mutable","name":"operator","nameLocation":"2340:8:10","nodeType":"VariableDeclaration","scope":813,"src":"2332:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":797,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":800,"mutability":"mutable","name":"from","nameLocation":"2366:4:10","nodeType":"VariableDeclaration","scope":813,"src":"2358:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":799,"name":"address","nodeType":"ElementaryTypeName","src":"2358:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":803,"mutability":"mutable","name":"ids","nameLocation":"2399:3:10","nodeType":"VariableDeclaration","scope":813,"src":"2380:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":801,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":802,"nodeType":"ArrayTypeName","src":"2380:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":806,"mutability":"mutable","name":"values","nameLocation":"2431:6:10","nodeType":"VariableDeclaration","scope":813,"src":"2412:25:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":804,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":805,"nodeType":"ArrayTypeName","src":"2412:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":808,"mutability":"mutable","name":"data","nameLocation":"2462:4:10","nodeType":"VariableDeclaration","scope":813,"src":"2447:19:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":807,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2322:150:10"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":813,"src":"2491:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":810,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2491:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2490:8:10"},"scope":814,"src":"2291:208:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":815,"src":"232:2269:10","usedErrors":[]}],"src":"118:2384:10"},"id":10},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[892]},"id":893,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":816,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":817,"nodeType":"StructuredDocumentation","src":"131:70:11","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":892,"linearizedBaseContracts":[892],"name":"IERC20","nameLocation":"212:6:11","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"225:158:11","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":826,"name":"Transfer","nameLocation":"394:8:11","nodeType":"EventDefinition","parameters":{"id":825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:11","nodeType":"VariableDeclaration","scope":826,"src":"403:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":819,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":822,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:11","nodeType":"VariableDeclaration","scope":826,"src":"425:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":821,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":824,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:11","nodeType":"VariableDeclaration","scope":826,"src":"445:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":823,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:11"},"src":"388:72:11"},{"anonymous":false,"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"466:148:11","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."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":835,"name":"Approval","nameLocation":"625:8:11","nodeType":"EventDefinition","parameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:11","nodeType":"VariableDeclaration","scope":835,"src":"634:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":828,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":831,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:11","nodeType":"VariableDeclaration","scope":835,"src":"657:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":830,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":833,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:11","nodeType":"VariableDeclaration","scope":835,"src":"682:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":832,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:11"},"src":"619:78:11"},{"documentation":{"id":836,"nodeType":"StructuredDocumentation","src":"703:66:11","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":841,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:11","nodeType":"FunctionDefinition","parameters":{"id":837,"nodeType":"ParameterList","parameters":[],"src":"794:2:11"},"returnParameters":{"id":840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":841,"src":"820:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":838,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:11"},"scope":892,"src":"774:55:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":842,"nodeType":"StructuredDocumentation","src":"835:72:11","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":849,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:11","nodeType":"FunctionDefinition","parameters":{"id":845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":844,"mutability":"mutable","name":"account","nameLocation":"939:7:11","nodeType":"VariableDeclaration","scope":849,"src":"931:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":843,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:11"},"returnParameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":849,"src":"971:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":846,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:11"},"scope":892,"src":"912:68:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":850,"nodeType":"StructuredDocumentation","src":"986:202:11","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":859,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:11","nodeType":"FunctionDefinition","parameters":{"id":855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"to","nameLocation":"1219:2:11","nodeType":"VariableDeclaration","scope":859,"src":"1211:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":851,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":854,"mutability":"mutable","name":"amount","nameLocation":"1231:6:11","nodeType":"VariableDeclaration","scope":859,"src":"1223:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":853,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:11"},"returnParameters":{"id":858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":859,"src":"1257:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":856,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:11"},"scope":892,"src":"1193:70:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":860,"nodeType":"StructuredDocumentation","src":"1269:264:11","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":869,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:11","nodeType":"FunctionDefinition","parameters":{"id":865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"mutability":"mutable","name":"owner","nameLocation":"1565:5:11","nodeType":"VariableDeclaration","scope":869,"src":"1557:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":861,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":864,"mutability":"mutable","name":"spender","nameLocation":"1580:7:11","nodeType":"VariableDeclaration","scope":869,"src":"1572:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":863,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:11"},"returnParameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":869,"src":"1612:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":866,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:11"},"scope":892,"src":"1538:83:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":870,"nodeType":"StructuredDocumentation","src":"1627:642:11","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":879,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:11","nodeType":"FunctionDefinition","parameters":{"id":875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":872,"mutability":"mutable","name":"spender","nameLocation":"2299:7:11","nodeType":"VariableDeclaration","scope":879,"src":"2291:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":871,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":874,"mutability":"mutable","name":"amount","nameLocation":"2316:6:11","nodeType":"VariableDeclaration","scope":879,"src":"2308:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":873,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:11"},"returnParameters":{"id":878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":879,"src":"2342:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":876,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:11"},"scope":892,"src":"2274:74:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":880,"nodeType":"StructuredDocumentation","src":"2354:287:11","text":" @dev Moves `amount` tokens from `from` to `to` 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":891,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:11","nodeType":"FunctionDefinition","parameters":{"id":887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":882,"mutability":"mutable","name":"from","nameLocation":"2685:4:11","nodeType":"VariableDeclaration","scope":891,"src":"2677:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":881,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":884,"mutability":"mutable","name":"to","nameLocation":"2707:2:11","nodeType":"VariableDeclaration","scope":891,"src":"2699:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":883,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":886,"mutability":"mutable","name":"amount","nameLocation":"2727:6:11","nodeType":"VariableDeclaration","scope":891,"src":"2719:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":885,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:11"},"returnParameters":{"id":890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":891,"src":"2758:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":888,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:11"},"scope":892,"src":"2646:118:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":893,"src":"202:2564:11","usedErrors":[]}],"src":"106:2661:11"},"id":11},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[910]},"id":911,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":894,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":895,"nodeType":"StructuredDocumentation","src":"141:152:12","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":910,"linearizedBaseContracts":[910],"name":"IERC721Receiver","nameLocation":"304:15:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":896,"nodeType":"StructuredDocumentation","src":"326:493:12","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":909,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:12","nodeType":"FunctionDefinition","parameters":{"id":905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"operator","nameLocation":"867:8:12","nodeType":"VariableDeclaration","scope":909,"src":"859:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":897,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":900,"mutability":"mutable","name":"from","nameLocation":"893:4:12","nodeType":"VariableDeclaration","scope":909,"src":"885:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":899,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":902,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:12","nodeType":"VariableDeclaration","scope":909,"src":"907:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":901,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"data","nameLocation":"947:4:12","nodeType":"VariableDeclaration","scope":909,"src":"932:19:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":903,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:12"},"returnParameters":{"id":908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":909,"src":"976:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":906,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:12"},"scope":910,"src":"824:160:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":911,"src":"294:692:12","usedErrors":[]}],"src":"116:871:12"},"id":12},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[922]},"id":923,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":912,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":913,"nodeType":"StructuredDocumentation","src":"125:279:13","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":922,"linearizedBaseContracts":[922],"name":"IERC165","nameLocation":"415:7:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":914,"nodeType":"StructuredDocumentation","src":"429:340:13","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":921,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:13","nodeType":"FunctionDefinition","parameters":{"id":917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":916,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:13","nodeType":"VariableDeclaration","scope":921,"src":"801:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":915,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:13"},"returnParameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":919,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":921,"src":"844:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":918,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:13"},"scope":922,"src":"774:76:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":923,"src":"405:447:13","usedErrors":[]}],"src":"100:753:13"},"id":13},"contracts/UniversalRouter.sol":{"ast":{"absolutePath":"contracts/UniversalRouter.sol","exportedSymbols":{"Commands":[3006],"Dispatcher":[2419],"IUniversalRouter":[2855],"RewardsCollector":[2563],"RouterImmutables":[2788],"RouterParameters":[2612],"UniversalRouter":[1087]},"id":1088,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":924,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:14"},{"absolutePath":"contracts/base/Dispatcher.sol","file":"./base/Dispatcher.sol","id":926,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1088,"sourceUnit":2420,"src":"98:49:14","symbolAliases":[{"foreign":{"id":925,"name":"Dispatcher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"106:10:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RewardsCollector.sol","file":"./base/RewardsCollector.sol","id":928,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1088,"sourceUnit":2564,"src":"148:61:14","symbolAliases":[{"foreign":{"id":927,"name":"RewardsCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"156:16:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RouterImmutables.sol","file":"./base/RouterImmutables.sol","id":931,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1088,"sourceUnit":2789,"src":"210:79:14","symbolAliases":[{"foreign":{"id":929,"name":"RouterParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"218:16:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":930,"name":"RouterImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"236:16:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/Commands.sol","file":"./libraries/Commands.sol","id":933,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1088,"sourceUnit":3007,"src":"290:50:14","symbolAliases":[{"foreign":{"id":932,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"298:8:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IUniversalRouter.sol","file":"./interfaces/IUniversalRouter.sol","id":935,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1088,"sourceUnit":2856,"src":"341:67:14","symbolAliases":[{"foreign":{"id":934,"name":"IUniversalRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"349:16:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":936,"name":"RouterImmutables","nameLocations":["438:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":2788,"src":"438:16:14"},"id":937,"nodeType":"InheritanceSpecifier","src":"438:16:14"},{"baseName":{"id":938,"name":"IUniversalRouter","nameLocations":["456:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":2855,"src":"456:16:14"},"id":939,"nodeType":"InheritanceSpecifier","src":"456:16:14"},{"baseName":{"id":940,"name":"Dispatcher","nameLocations":["474:10:14"],"nodeType":"IdentifierPath","referencedDeclaration":2419,"src":"474:10:14"},"id":941,"nodeType":"InheritanceSpecifier","src":"474:10:14"},{"baseName":{"id":942,"name":"RewardsCollector","nameLocations":["486:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":2563,"src":"486:16:14"},"id":943,"nodeType":"InheritanceSpecifier","src":"486:16:14"}],"canonicalName":"UniversalRouter","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1087,"linearizedBaseContracts":[1087,2563,2419,2497,1190,2855,814,922,910,4402,41,5134,3666,3544,2788,2813],"name":"UniversalRouter","nameLocation":"419:15:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":956,"nodeType":"Block","src":"550:94:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":947,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"564:5:14","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"570:9:14","memberName":"timestamp","nodeType":"MemberAccess","src":"564:15:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":949,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":945,"src":"582:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"564:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":954,"nodeType":"IfStatement","src":"560:66:14","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":951,"name":"TransactionDeadlinePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2840,"src":"599:25:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"599:27:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":953,"nodeType":"RevertStatement","src":"592:34:14"}},{"id":955,"nodeType":"PlaceholderStatement","src":"636:1:14"}]},"id":957,"name":"checkDeadline","nameLocation":"518:13:14","nodeType":"ModifierDefinition","parameters":{"id":946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":945,"mutability":"mutable","name":"deadline","nameLocation":"540:8:14","nodeType":"VariableDeclaration","scope":957,"src":"532:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":944,"name":"uint256","nodeType":"ElementaryTypeName","src":"532:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"531:18:14"},"src":"509:135:14","virtual":false,"visibility":"internal"},{"body":{"id":966,"nodeType":"Block","src":"719:2:14","statements":[]},"id":967,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":963,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"711:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}}],"id":964,"kind":"baseConstructorSpecifier","modifierName":{"id":962,"name":"RouterImmutables","nameLocations":["694:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":2788,"src":"694:16:14"},"nodeType":"ModifierInvocation","src":"694:24:14"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":960,"mutability":"mutable","name":"params","nameLocation":"686:6:14","nodeType":"VariableDeclaration","scope":967,"src":"662:30:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters"},"typeName":{"id":959,"nodeType":"UserDefinedTypeName","pathNode":{"id":958,"name":"RouterParameters","nameLocations":["662:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":2612,"src":"662:16:14"},"referencedDeclaration":2612,"src":"662:16:14","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_storage_ptr","typeString":"struct RouterParameters"}},"visibility":"internal"}],"src":"661:32:14"},"returnParameters":{"id":965,"nodeType":"ParameterList","parameters":[],"src":"719:0:14"},"scope":1087,"src":"650:71:14","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2854],"body":{"id":986,"nodeType":"Block","src":"918:42:14","statements":[{"expression":{"arguments":[{"id":982,"name":"commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"936:8:14","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":983,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"946:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":981,"name":"execute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"928:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes calldata,bytes calldata[] calldata)"}},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"928:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":985,"nodeType":"ExpressionStatement","src":"928:25:14"}]},"documentation":{"id":968,"nodeType":"StructuredDocumentation","src":"727:32:14","text":"@inheritdoc IUniversalRouter"},"functionSelector":"3593564c","id":987,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":978,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"904:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":979,"kind":"modifierInvocation","modifierName":{"id":977,"name":"checkDeadline","nameLocations":["890:13:14"],"nodeType":"IdentifierPath","referencedDeclaration":957,"src":"890:13:14"},"nodeType":"ModifierInvocation","src":"890:23:14"}],"name":"execute","nameLocation":"773:7:14","nodeType":"FunctionDefinition","parameters":{"id":976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":970,"mutability":"mutable","name":"commands","nameLocation":"796:8:14","nodeType":"VariableDeclaration","scope":987,"src":"781:23:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":969,"name":"bytes","nodeType":"ElementaryTypeName","src":"781:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":973,"mutability":"mutable","name":"inputs","nameLocation":"823:6:14","nodeType":"VariableDeclaration","scope":987,"src":"806:23:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":971,"name":"bytes","nodeType":"ElementaryTypeName","src":"806:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":972,"nodeType":"ArrayTypeName","src":"806:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":975,"mutability":"mutable","name":"deadline","nameLocation":"839:8:14","nodeType":"VariableDeclaration","scope":987,"src":"831:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":974,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"780:68:14"},"returnParameters":{"id":980,"nodeType":"ParameterList","parameters":[],"src":"918:0:14"},"scope":1087,"src":"764:196:14","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2275],"body":{"id":1065,"nodeType":"Block","src":"1100:743:14","statements":[{"assignments":[1000],"declarations":[{"constant":false,"id":1000,"mutability":"mutable","name":"success","nameLocation":"1115:7:14","nodeType":"VariableDeclaration","scope":1065,"src":"1110:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":999,"name":"bool","nodeType":"ElementaryTypeName","src":"1110:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1001,"nodeType":"VariableDeclarationStatement","src":"1110:12:14"},{"assignments":[1003],"declarations":[{"constant":false,"id":1003,"mutability":"mutable","name":"output","nameLocation":"1145:6:14","nodeType":"VariableDeclaration","scope":1065,"src":"1132:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1002,"name":"bytes","nodeType":"ElementaryTypeName","src":"1132:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1004,"nodeType":"VariableDeclarationStatement","src":"1132:19:14"},{"assignments":[1006],"declarations":[{"constant":false,"id":1006,"mutability":"mutable","name":"numCommands","nameLocation":"1169:11:14","nodeType":"VariableDeclaration","scope":1065,"src":"1161:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1005,"name":"uint256","nodeType":"ElementaryTypeName","src":"1161:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1009,"initialValue":{"expression":{"id":1007,"name":"commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"1183:8:14","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1192:6:14","memberName":"length","nodeType":"MemberAccess","src":"1183:15:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1161:37:14"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1010,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"1212:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1219:6:14","memberName":"length","nodeType":"MemberAccess","src":"1212:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1012,"name":"numCommands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1006,"src":"1229:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1212:28:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1017,"nodeType":"IfStatement","src":"1208:57:14","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1014,"name":"LengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"1249:14:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1249:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1016,"nodeType":"RevertStatement","src":"1242:23:14"}},{"body":{"id":1063,"nodeType":"Block","src":"1427:410:14","statements":[{"assignments":[1026],"declarations":[{"constant":false,"id":1026,"mutability":"mutable","name":"command","nameLocation":"1448:7:14","nodeType":"VariableDeclaration","scope":1063,"src":"1441:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1025,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1441:6:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":1030,"initialValue":{"baseExpression":{"id":1027,"name":"commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"1458:8:14","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1029,"indexExpression":{"id":1028,"name":"commandIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"1467:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1458:22:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"1441:39:14"},{"assignments":[1032],"declarations":[{"constant":false,"id":1032,"mutability":"mutable","name":"input","nameLocation":"1510:5:14","nodeType":"VariableDeclaration","scope":1063,"src":"1495:20:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1031,"name":"bytes","nodeType":"ElementaryTypeName","src":"1495:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1036,"initialValue":{"baseExpression":{"id":1033,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"1518:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":1035,"indexExpression":{"id":1034,"name":"commandIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"1525:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1518:20:14","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"1495:43:14"},{"expression":{"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1037,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"1554:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1038,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1003,"src":"1563:6:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1039,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1553:17:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1041,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"1582:7:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":1042,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1032,"src":"1591:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1040,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"1573:8:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes1_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes1,bytes calldata) returns (bool,bytes memory)"}},"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:24:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"1553:44:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1045,"nodeType":"ExpressionStatement","src":"1553:44:14"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1616:8:14","subExpression":{"id":1046,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"1617:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":1049,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"1644:7:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1048,"name":"successRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"1628:15:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_bool_$","typeString":"function (bytes1) pure returns (bool)"}},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1628:24:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1616:36:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1058,"nodeType":"IfStatement","src":"1612:144:14","trueBody":{"id":1057,"nodeType":"Block","src":"1654:102:14","statements":[{"errorCall":{"arguments":[{"id":1053,"name":"commandIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"1710:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1054,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1003,"src":"1733:6:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1052,"name":"ExecutionFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"1679:15:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,bytes memory) pure"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1696:12:14","1724:7:14"],"names":["commandIndex","message"],"nodeType":"FunctionCall","src":"1679:62:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1056,"nodeType":"RevertStatement","src":"1672:69:14"}]}},{"id":1062,"nodeType":"UncheckedBlock","src":"1770:57:14","statements":[{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1798:14:14","subExpression":{"id":1059,"name":"commandIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"1798:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"1798:14:14"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1022,"name":"commandIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"1398:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1023,"name":"numCommands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1006,"src":"1413:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1398:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1064,"initializationExpression":{"assignments":[1019],"declarations":[{"constant":false,"id":1019,"mutability":"mutable","name":"commandIndex","nameLocation":"1380:12:14","nodeType":"VariableDeclaration","scope":1064,"src":"1372:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1018,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1021,"initialValue":{"hexValue":"30","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1395:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1372:24:14"},"nodeType":"ForStatement","src":"1367:470:14"}]},"documentation":{"id":988,"nodeType":"StructuredDocumentation","src":"966:26:14","text":"@inheritdoc Dispatcher"},"functionSelector":"24856bc3","id":1066,"implemented":true,"kind":"function","modifiers":[{"id":997,"kind":"modifierInvocation","modifierName":{"id":996,"name":"isNotLocked","nameLocations":["1088:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2465,"src":"1088:11:14"},"nodeType":"ModifierInvocation","src":"1088:11:14"}],"name":"execute","nameLocation":"1006:7:14","nodeType":"FunctionDefinition","overrides":{"id":995,"nodeType":"OverrideSpecifier","overrides":[],"src":"1079:8:14"},"parameters":{"id":994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"commands","nameLocation":"1029:8:14","nodeType":"VariableDeclaration","scope":1066,"src":"1014:23:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":989,"name":"bytes","nodeType":"ElementaryTypeName","src":"1014:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":993,"mutability":"mutable","name":"inputs","nameLocation":"1056:6:14","nodeType":"VariableDeclaration","scope":1066,"src":"1039:23:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":991,"name":"bytes","nodeType":"ElementaryTypeName","src":"1039:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":992,"nodeType":"ArrayTypeName","src":"1039:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1013:50:14"},"returnParameters":{"id":998,"nodeType":"ParameterList","parameters":[],"src":"1100:0:14"},"scope":1087,"src":"997:846:14","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1080,"nodeType":"Block","src":"1919:65:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1073,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1068,"src":"1936:7:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"id":1074,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"1946:8:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1955:17:14","memberName":"FLAG_ALLOW_REVERT","nodeType":"MemberAccess","referencedDeclaration":2897,"src":"1946:26:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1936:36:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1976:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1936:41:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1072,"id":1079,"nodeType":"Return","src":"1929:48:14"}]},"id":1081,"implemented":true,"kind":"function","modifiers":[],"name":"successRequired","nameLocation":"1858:15:14","nodeType":"FunctionDefinition","parameters":{"id":1069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1068,"mutability":"mutable","name":"command","nameLocation":"1881:7:14","nodeType":"VariableDeclaration","scope":1081,"src":"1874:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1067,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1874:6:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"1873:16:14"},"returnParameters":{"id":1072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1081,"src":"1913:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1070,"name":"bool","nodeType":"ElementaryTypeName","src":"1913:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1912:6:14"},"scope":1087,"src":"1849:135:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1085,"nodeType":"Block","src":"2076:2:14","statements":[]},"documentation":{"id":1082,"nodeType":"StructuredDocumentation","src":"1990:54:14","text":"@notice To receive AMB from SAMB and NFT protocols"},"id":1086,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1083,"nodeType":"ParameterList","parameters":[],"src":"2056:2:14"},"returnParameters":{"id":1084,"nodeType":"ParameterList","parameters":[],"src":"2076:0:14"},"scope":1087,"src":"2049:29:14","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1088,"src":"410:1670:14","usedErrors":[1236,1238,1240,1242,1244,2425,2521,2834,2837,2840,2843,3093,3095,3097,3099,3564,3672,3932,3934,3936,3938,3940,4409,4411,4811,4813,4815,7269]}],"src":"45:2036:14"},"id":14},"contracts/base/Callbacks.sol":{"ast":{"absolutePath":"contracts/base/Callbacks.sol","exportedSymbols":{"Callbacks":[1190],"IERC1155Receiver":[814],"IERC165":[922],"IERC721Receiver":[910]},"id":1191,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1089,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:15"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":1091,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1191,"sourceUnit":911,"src":"71:89:15","symbolAliases":[{"foreign":{"id":1090,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"79:15:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","id":1093,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1191,"sourceUnit":815,"src":"161:92:15","symbolAliases":[{"foreign":{"id":1092,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"169:16:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":1095,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1191,"sourceUnit":923,"src":"254:80:15","symbolAliases":[{"foreign":{"id":1094,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"262:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1097,"name":"IERC721Receiver","nameLocations":["592:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":910,"src":"592:15:15"},"id":1098,"nodeType":"InheritanceSpecifier","src":"592:15:15"},{"baseName":{"id":1099,"name":"IERC1155Receiver","nameLocations":["609:16:15"],"nodeType":"IdentifierPath","referencedDeclaration":814,"src":"609:16:15"},"id":1100,"nodeType":"InheritanceSpecifier","src":"609:16:15"}],"canonicalName":"Callbacks","contractDependencies":[],"contractKind":"contract","documentation":{"id":1096,"nodeType":"StructuredDocumentation","src":"336:234:15","text":"@title ERC Callback Support\n @notice Implements various functions introduced by a variety of ERCs for security reasons.\n All are called by external contracts to ensure that this contract safely supports the ERC in question."},"fullyImplemented":true,"id":1190,"linearizedBaseContracts":[1190,814,922,910],"name":"Callbacks","nameLocation":"579:9:15","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[909],"body":{"id":1117,"nodeType":"Block","src":"732:54:15","statements":[{"expression":{"expression":{"expression":{"id":1113,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"749:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Callbacks_$1190","typeString":"contract Callbacks"}},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"754:16:15","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"749:21:15","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) pure external returns (bytes4)"}},"id":1115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"771:8:15","memberName":"selector","nodeType":"MemberAccess","src":"749:30:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":1112,"id":1116,"nodeType":"Return","src":"742:37:15"}]},"functionSelector":"150b7a02","id":1118,"implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"641:16:15","nodeType":"FunctionDefinition","parameters":{"id":1109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1118,"src":"658:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1101,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1118,"src":"667:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1103,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1118,"src":"676:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"676:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1118,"src":"685:14:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1107,"name":"bytes","nodeType":"ElementaryTypeName","src":"685:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"657:43:15"},"returnParameters":{"id":1112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1118,"src":"724:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1110,"name":"bytes4","nodeType":"ElementaryTypeName","src":"724:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"723:8:15"},"scope":1190,"src":"632:154:15","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[795],"body":{"id":1137,"nodeType":"Block","src":"902:55:15","statements":[{"expression":{"expression":{"expression":{"id":1133,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"919:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Callbacks_$1190","typeString":"contract Callbacks"}},"id":1134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"924:17:15","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":1138,"src":"919:22:15","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) pure external returns (bytes4)"}},"id":1135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"942:8:15","memberName":"selector","nodeType":"MemberAccess","src":"919:31:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":1132,"id":1136,"nodeType":"Return","src":"912:38:15"}]},"functionSelector":"f23a6e61","id":1138,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"801:17:15","nodeType":"FunctionDefinition","parameters":{"id":1129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1138,"src":"819:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1119,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1138,"src":"828:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1121,"name":"address","nodeType":"ElementaryTypeName","src":"828:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1138,"src":"837:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1123,"name":"uint256","nodeType":"ElementaryTypeName","src":"837:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1138,"src":"846:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1125,"name":"uint256","nodeType":"ElementaryTypeName","src":"846:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1128,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1138,"src":"855:14:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1127,"name":"bytes","nodeType":"ElementaryTypeName","src":"855:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"818:52:15"},"returnParameters":{"id":1132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1131,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1138,"src":"894:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1130,"name":"bytes4","nodeType":"ElementaryTypeName","src":"894:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"893:8:15"},"scope":1190,"src":"792:165:15","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[813],"body":{"id":1159,"nodeType":"Block","src":"1128:60:15","statements":[{"expression":{"expression":{"expression":{"id":1155,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1145:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Callbacks_$1190","typeString":"contract Callbacks"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1150:22:15","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":1160,"src":"1145:27:15","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) pure external returns (bytes4)"}},"id":1157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1173:8:15","memberName":"selector","nodeType":"MemberAccess","src":"1145:36:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":1154,"id":1158,"nodeType":"Return","src":"1138:43:15"}]},"functionSelector":"bc197c81","id":1160,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"972:22:15","nodeType":"FunctionDefinition","parameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1160,"src":"995:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1139,"name":"address","nodeType":"ElementaryTypeName","src":"995:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1160,"src":"1004:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1141,"name":"address","nodeType":"ElementaryTypeName","src":"1004:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1160,"src":"1013:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1143,"name":"uint256","nodeType":"ElementaryTypeName","src":"1013:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1144,"nodeType":"ArrayTypeName","src":"1013:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1160,"src":"1033:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1146,"name":"uint256","nodeType":"ElementaryTypeName","src":"1033:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1147,"nodeType":"ArrayTypeName","src":"1033:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1160,"src":"1053:14:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"1053:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"994:74:15"},"returnParameters":{"id":1154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1160,"src":"1116:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1152,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1116:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1115:8:15"},"scope":1190,"src":"963:225:15","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[921],"body":{"id":1188,"nodeType":"Block","src":"1270:181:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1167,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"1287:11:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1169,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"1307:16:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$814_$","typeString":"type(contract IERC1155Receiver)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$814_$","typeString":"type(contract IERC1155Receiver)"}],"id":1168,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1302:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1302:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155Receiver_$814","typeString":"type(contract IERC1155Receiver)"}},"id":1171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1325:11:15","memberName":"interfaceId","nodeType":"MemberAccess","src":"1302:34:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1287:49:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1173,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"1340:11:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1175,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"1360:15:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$910_$","typeString":"type(contract IERC721Receiver)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$910_$","typeString":"type(contract IERC721Receiver)"}],"id":1174,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1355:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1355:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Receiver_$910","typeString":"type(contract IERC721Receiver)"}},"id":1177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1377:11:15","memberName":"interfaceId","nodeType":"MemberAccess","src":"1355:33:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1340:48:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1287:101:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1180,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"1404:11:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1182,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"1424:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$922_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$922_$","typeString":"type(contract IERC165)"}],"id":1181,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1419:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1419:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$922","typeString":"type(contract IERC165)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1433:11:15","memberName":"interfaceId","nodeType":"MemberAccess","src":"1419:25:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1404:40:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1287:157:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1166,"id":1187,"nodeType":"Return","src":"1280:164:15"}]},"functionSelector":"01ffc9a7","id":1189,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1203:17:15","nodeType":"FunctionDefinition","parameters":{"id":1163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1162,"mutability":"mutable","name":"interfaceId","nameLocation":"1228:11:15","nodeType":"VariableDeclaration","scope":1189,"src":"1221:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1161,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1221:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1220:20:15"},"returnParameters":{"id":1166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1189,"src":"1264:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1164,"name":"bool","nodeType":"ElementaryTypeName","src":"1264:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1263:6:15"},"scope":1190,"src":"1194:257:15","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":1191,"src":"570:883:15","usedErrors":[]}],"src":"45:1409:15"},"id":15},"contracts/base/Dispatcher.sol":{"ast":{"absolutePath":"contracts/base/Dispatcher.sol","exportedSymbols":{"BytesLib":[3807],"CLSwapRouter":[4402],"Callbacks":[1190],"ClassicSwapRouter":[5134],"Commands":[3006],"Dispatcher":[2419],"ERC1155":[8099],"ERC20":[8531],"ERC721":[9075],"IAllowanceTransfer":[6600],"ICryptoPunksMarket":[2873],"LockAndMsgSender":[2497],"Payments":[3544],"RouterImmutables":[2788]},"id":2420,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1192,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:16"},{"absolutePath":"contracts/modules/astra/classic/ClassicSwapRouter.sol","file":"../modules/astra/classic/ClassicSwapRouter.sol","id":1194,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":5135,"src":"71:81:16","symbolAliases":[{"foreign":{"id":1193,"name":"ClassicSwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5134,"src":"79:17:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/astra/cl/CLSwapRouter.sol","file":"../modules/astra/cl/CLSwapRouter.sol","id":1196,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":4403,"src":"153:66:16","symbolAliases":[{"foreign":{"id":1195,"name":"CLSwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"161:12:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/astra/cl/BytesLib.sol","file":"../modules/astra/cl/BytesLib.sol","id":1198,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":3808,"src":"220:58:16","symbolAliases":[{"foreign":{"id":1197,"name":"BytesLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"228:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/Payments.sol","file":"../modules/Payments.sol","id":1200,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":3545,"src":"279:49:16","symbolAliases":[{"foreign":{"id":1199,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"287:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RouterImmutables.sol","file":"../base/RouterImmutables.sol","id":1202,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":2789,"src":"329:62:16","symbolAliases":[{"foreign":{"id":1201,"name":"RouterImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"337:16:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/Callbacks.sol","file":"../base/Callbacks.sol","id":1204,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":1191,"src":"392:48:16","symbolAliases":[{"foreign":{"id":1203,"name":"Callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1190,"src":"400:9:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/Commands.sol","file":"../libraries/Commands.sol","id":1206,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":3007,"src":"441:51:16","symbolAliases":[{"foreign":{"id":1205,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"449:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/LockAndMsgSender.sol","file":"./LockAndMsgSender.sol","id":1208,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":2498,"src":"493:56:16","symbolAliases":[{"foreign":{"id":1207,"name":"LockAndMsgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"501:16:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC721.sol","file":"solmate/src/tokens/ERC721.sol","id":1210,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":9096,"src":"550:53:16","symbolAliases":[{"foreign":{"id":1209,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"558:6:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC1155.sol","file":"solmate/src/tokens/ERC1155.sol","id":1212,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":8144,"src":"604:55:16","symbolAliases":[{"foreign":{"id":1211,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"612:7:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":1214,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":8532,"src":"660:51:16","symbolAliases":[{"foreign":{"id":1213,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"668:5:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"permit2/src/interfaces/IAllowanceTransfer.sol","id":1216,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":6601,"src":"712:81:16","symbolAliases":[{"foreign":{"id":1215,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"720:18:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/ICryptoPunksMarket.sol","file":"../interfaces/external/ICryptoPunksMarket.sol","id":1218,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2420,"sourceUnit":2874,"src":"794:81:16","symbolAliases":[{"foreign":{"id":1217,"name":"ICryptoPunksMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"802:18:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1220,"name":"Payments","nameLocations":["1054:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3544,"src":"1054:8:16"},"id":1221,"nodeType":"InheritanceSpecifier","src":"1054:8:16"},{"baseName":{"id":1222,"name":"ClassicSwapRouter","nameLocations":["1064:17:16"],"nodeType":"IdentifierPath","referencedDeclaration":5134,"src":"1064:17:16"},"id":1223,"nodeType":"InheritanceSpecifier","src":"1064:17:16"},{"baseName":{"id":1224,"name":"CLSwapRouter","nameLocations":["1083:12:16"],"nodeType":"IdentifierPath","referencedDeclaration":4402,"src":"1083:12:16"},"id":1225,"nodeType":"InheritanceSpecifier","src":"1083:12:16"},{"baseName":{"id":1226,"name":"Callbacks","nameLocations":["1097:9:16"],"nodeType":"IdentifierPath","referencedDeclaration":1190,"src":"1097:9:16"},"id":1227,"nodeType":"InheritanceSpecifier","src":"1097:9:16"},{"baseName":{"id":1228,"name":"LockAndMsgSender","nameLocations":["1108:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":2497,"src":"1108:16:16"},"id":1229,"nodeType":"InheritanceSpecifier","src":"1108:16:16"}],"canonicalName":"Dispatcher","contractDependencies":[],"contractKind":"contract","documentation":{"id":1219,"nodeType":"StructuredDocumentation","src":"877:145:16","text":"@title Decodes and Executes Commands\n @notice Called by the UniversalRouter contract to efficiently decode and execute a singular command"},"fullyImplemented":false,"id":2419,"linearizedBaseContracts":[2419,2497,1190,814,922,910,4402,41,5134,3666,3544,2788],"name":"Dispatcher","nameLocation":"1040:10:16","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1232,"libraryName":{"id":1230,"name":"BytesLib","nameLocations":["1137:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3807,"src":"1137:8:16"},"nodeType":"UsingForDirective","src":"1131:25:16","typeName":{"id":1231,"name":"bytes","nodeType":"ElementaryTypeName","src":"1150:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"errorSelector":"d76a1e9e","id":1236,"name":"InvalidCommandType","nameLocation":"1168:18:16","nodeType":"ErrorDefinition","parameters":{"id":1235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1234,"mutability":"mutable","name":"commandType","nameLocation":"1195:11:16","nodeType":"VariableDeclaration","scope":1236,"src":"1187:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1233,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:21:16"},"src":"1162:46:16"},{"errorSelector":"ae9bdf00","id":1238,"name":"BuyPunkFailed","nameLocation":"1219:13:16","nodeType":"ErrorDefinition","parameters":{"id":1237,"nodeType":"ParameterList","parameters":[],"src":"1232:2:16"},"src":"1213:22:16"},{"errorSelector":"7dbe7e89","id":1240,"name":"InvalidOwnerERC721","nameLocation":"1246:18:16","nodeType":"ErrorDefinition","parameters":{"id":1239,"nodeType":"ParameterList","parameters":[],"src":"1264:2:16"},"src":"1240:27:16"},{"errorSelector":"483a6929","id":1242,"name":"InvalidOwnerERC1155","nameLocation":"1278:19:16","nodeType":"ErrorDefinition","parameters":{"id":1241,"nodeType":"ParameterList","parameters":[],"src":"1297:2:16"},"src":"1272:28:16"},{"errorSelector":"a3281672","id":1244,"name":"BalanceTooLow","nameLocation":"1311:13:16","nodeType":"ErrorDefinition","parameters":{"id":1243,"nodeType":"ParameterList","parameters":[],"src":"1324:2:16"},"src":"1305:22:16"},{"body":{"id":2265,"nodeType":"Block","src":"1897:20050:16","statements":[{"assignments":[1257],"declarations":[{"constant":false,"id":1257,"mutability":"mutable","name":"command","nameLocation":"1915:7:16","nodeType":"VariableDeclaration","scope":2265,"src":"1907:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1907:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1265,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1260,"name":"commandType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"1931:11:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"id":1261,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"1945:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1954:17:16","memberName":"COMMAND_TYPE_MASK","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"1945:26:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1931:40:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1925:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1258,"name":"uint8","nodeType":"ElementaryTypeName","src":"1925:5:16","typeDescriptions":{}}},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1925:47:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1907:65:16"},{"expression":{"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1266,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1983:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1993:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1983:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1269,"nodeType":"ExpressionStatement","src":"1983:14:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1270,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"2012:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1271,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"2022:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2031:18:16","memberName":"FOURTH_IF_BOUNDARY","nodeType":"MemberAccess","referencedDeclaration":2996,"src":"2022:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2012:37:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2263,"nodeType":"Block","src":"20006:1935:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2166,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"20024:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2167,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"20035:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20044:12:16","memberName":"SEAPORT_V1_4","nodeType":"MemberAccess","referencedDeclaration":2999,"src":"20035:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20024:32:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2190,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"21099:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2191,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"21110:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21119:16:16","memberName":"EXECUTE_SUB_PLAN","nodeType":"MemberAccess","referencedDeclaration":3002,"src":"21110:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21099:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2232,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"21442:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2233,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"21453:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21462:13:16","memberName":"APPROVE_ERC20","nodeType":"MemberAccess","referencedDeclaration":3005,"src":"21453:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21442:33:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2259,"nodeType":"Block","src":"21805:126:16","statements":[{"errorCall":{"arguments":[{"id":2256,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"21908:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2255,"name":"InvalidCommandType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"21889:18:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21889:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2258,"nodeType":"RevertStatement","src":"21882:34:16"}]},"id":2260,"nodeType":"IfStatement","src":"21438:493:16","trueBody":{"id":2254,"nodeType":"Block","src":"21477:322:16","statements":[{"assignments":[2238],"declarations":[{"constant":false,"id":2238,"mutability":"mutable","name":"token","nameLocation":"21501:5:16","nodeType":"VariableDeclaration","scope":2254,"src":"21495:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":2237,"nodeType":"UserDefinedTypeName","pathNode":{"id":2236,"name":"ERC20","nameLocations":["21495:5:16"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"21495:5:16"},"referencedDeclaration":8531,"src":"21495:5:16","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"}],"id":2239,"nodeType":"VariableDeclarationStatement","src":"21495:11:16"},{"assignments":[2244],"declarations":[{"constant":false,"id":2244,"mutability":"mutable","name":"spender","nameLocation":"21550:7:16","nodeType":"VariableDeclaration","scope":2254,"src":"21524:33:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"},"typeName":{"id":2243,"nodeType":"UserDefinedTypeName","pathNode":{"id":2242,"name":"RouterImmutables.Spenders","nameLocations":["21524:16:16","21541:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":2674,"src":"21524:25:16"},"referencedDeclaration":2674,"src":"21524:25:16","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}},"visibility":"internal"}],"id":2245,"nodeType":"VariableDeclarationStatement","src":"21524:33:16"},{"AST":{"nodeType":"YulBlock","src":"21584:146:16","statements":[{"nodeType":"YulAssignment","src":"21606:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"21628:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"21615:12:16"},"nodeType":"YulFunctionCall","src":"21615:27:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"21606:5:16"}]},{"nodeType":"YulAssignment","src":"21663:49:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"21691:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"21706:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21687:3:16"},"nodeType":"YulFunctionCall","src":"21687:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"21674:12:16"},"nodeType":"YulFunctionCall","src":"21674:38:16"},"variableNames":[{"name":"spender","nodeType":"YulIdentifier","src":"21663:7:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1249,"isOffset":true,"isSlot":false,"src":"21628:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"21691:13:16","suffix":"offset","valueSize":1},{"declaration":2244,"isOffset":false,"isSlot":false,"src":"21663:7:16","valueSize":1},{"declaration":2238,"isOffset":false,"isSlot":false,"src":"21606:5:16","valueSize":1}],"id":2246,"nodeType":"InlineAssembly","src":"21575:155:16"},{"expression":{"arguments":[{"id":2250,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"21769:5:16","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},{"id":2251,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2244,"src":"21776:7:16","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}],"expression":{"id":2247,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"21747:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21756:12:16","memberName":"approveERC20","nodeType":"MemberAccess","referencedDeclaration":3198,"src":"21747:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_enum$_Spenders_$2674_$returns$__$","typeString":"function (contract ERC20,enum RouterImmutables.Spenders)"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21747:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2253,"nodeType":"ExpressionStatement","src":"21747:37:16"}]}},"id":2261,"nodeType":"IfStatement","src":"21095:836:16","trueBody":{"id":2231,"nodeType":"Block","src":"21137:295:16","statements":[{"assignments":[2195],"declarations":[{"constant":false,"id":2195,"mutability":"mutable","name":"_commands","nameLocation":"21170:9:16","nodeType":"VariableDeclaration","scope":2231,"src":"21155:24:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2194,"name":"bytes","nodeType":"ElementaryTypeName","src":"21155:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2200,"initialValue":{"arguments":[{"hexValue":"30","id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21197:1:16","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"}],"expression":{"id":2196,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"21182:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21189:7:16","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"21182:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21182:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"21155:44:16"},{"assignments":[2205],"declarations":[{"constant":false,"id":2205,"mutability":"mutable","name":"_inputs","nameLocation":"21234:7:16","nodeType":"VariableDeclaration","scope":2231,"src":"21217:24:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2203,"name":"bytes","nodeType":"ElementaryTypeName","src":"21217:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2204,"nodeType":"ArrayTypeName","src":"21217:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"id":2210,"initialValue":{"arguments":[{"hexValue":"31","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21264:1:16","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":2206,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"21244:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21251:12:16","memberName":"toBytesArray","nodeType":"MemberAccess","referencedDeclaration":3806,"src":"21244:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata[] calldata)"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21244:22:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"nodeType":"VariableDeclarationStatement","src":"21217:49:16"},{"expression":{"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2211,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"21285:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2212,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"21294:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2213,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"21284:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"expression":{"id":2222,"name":"Dispatcher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"21368:10:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Dispatcher_$2419_$","typeString":"type(contract Dispatcher)"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21379:7:16","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2275,"src":"21368:18:16","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_bytes_calldata_ptr_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function Dispatcher.execute(bytes calldata,bytes calldata[] calldata) payable"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21387:8:16","memberName":"selector","nodeType":"MemberAccess","src":"21368:27:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":2225,"name":"_commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2195,"src":"21397:9:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2226,"name":"_inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"21408:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":2220,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21345:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21349:18:16","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"21345:22:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21345:71:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"components":[{"arguments":[{"id":2216,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"21333:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}],"id":2215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21325:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2214,"name":"address","nodeType":"ElementaryTypeName","src":"21325:7:16","typeDescriptions":{}}},"id":2217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21325:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2218,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21324:15:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21340:4:16","memberName":"call","nodeType":"MemberAccess","src":"21324:20:16","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":2228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21324:93:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"21284:133:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2230,"nodeType":"ExpressionStatement","src":"21284:133:16"}]}},"id":2262,"nodeType":"IfStatement","src":"20020:1911:16","trueBody":{"id":2189,"nodeType":"Block","src":"20058:1031:16","statements":[{"assignments":[2171,2173],"declarations":[{"constant":false,"id":2171,"mutability":"mutable","name":"value","nameLocation":"20946:5:16","nodeType":"VariableDeclaration","scope":2189,"src":"20938:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2170,"name":"uint256","nodeType":"ElementaryTypeName","src":"20938:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2173,"mutability":"mutable","name":"data","nameLocation":"20968:4:16","nodeType":"VariableDeclaration","scope":2189,"src":"20953:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2172,"name":"bytes","nodeType":"ElementaryTypeName","src":"20953:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"documentation":"@dev Seaport 1.4 and 1.5 allow for orders to be created by contracts.\n     These orders pass control to the contract offerers during fufillment,\n         allowing them to perform any number of destructive actions as a holder of the NFT.\n     Integrators should be aware that in some scenarios: e.g. purchasing an NFT that allows the holder\n         to claim another NFT, the contract offerer can \"steal\" the claim during order fufillment.\n     For some such purchases, an OWNER_CHECK command can be prepended to ensure that all tokens have the desired owner at the end of the transaction.\n     This is also outlined in the Seaport documentation: https://github.com/ProjectOpenSea/seaport/blob/main/docs/SeaportDocumentation.md","id":2177,"initialValue":{"arguments":[{"id":2175,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"20992:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2174,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"20976:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20976:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"20937:62:16"},{"expression":{"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2178,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"21018:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2179,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"21027:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2180,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"21017:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2185,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2173,"src":"21069:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2181,"name":"SEAPORT_V1_4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"21037:12:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21050:4:16","memberName":"call","nodeType":"MemberAccess","src":"21037:17:16","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":2184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"21062:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"21037:31:16","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":2186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21037:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"21017:57:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2188,"nodeType":"ExpressionStatement","src":"21017:57:16"}]}}]},"id":2264,"nodeType":"IfStatement","src":"2008:19933:16","trueBody":{"id":2165,"nodeType":"Block","src":"2051:17949:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1274,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"2069:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1275,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"2079:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2088:18:16","memberName":"SECOND_IF_BOUNDARY","nodeType":"MemberAccess","referencedDeclaration":2948,"src":"2079:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2069:37:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2163,"nodeType":"Block","src":"12399:7560:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1762,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"12463:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1763,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"12473:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12482:17:16","memberName":"THIRD_IF_BOUNDARY","nodeType":"MemberAccess","referencedDeclaration":2972,"src":"12473:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12463:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2161,"nodeType":"Block","src":"17645:2300:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2006,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"17671:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2007,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"17682:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17691:8:16","memberName":"X2Y2_721","nodeType":"MemberAccess","referencedDeclaration":2975,"src":"17682:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17671:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2020,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"17812:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2021,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"17823:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17832:8:16","memberName":"SUDOSWAP","nodeType":"MemberAccess","referencedDeclaration":2978,"src":"17823:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17812:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2044,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"18118:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2045,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"18129:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18138:5:16","memberName":"NFT20","nodeType":"MemberAccess","referencedDeclaration":2981,"src":"18129:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18118:25:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2068,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"18422:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2069,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"18433:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18442:9:16","memberName":"X2Y2_1155","nodeType":"MemberAccess","referencedDeclaration":2984,"src":"18433:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18422:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2082,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"18565:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2083,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"18576:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18585:10:16","memberName":"FOUNDATION","nodeType":"MemberAccess","referencedDeclaration":2987,"src":"18576:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18565:30:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2096,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"18714:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2097,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"18725:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18734:13:16","memberName":"SWEEP_ERC1155","nodeType":"MemberAccess","referencedDeclaration":2990,"src":"18725:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18714:33:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2125,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"19474:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2126,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"19485:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19494:14:16","memberName":"ELEMENT_MARKET","nodeType":"MemberAccess","referencedDeclaration":2993,"src":"19485:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19474:34:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2153,"nodeType":"Block","src":"19788:139:16","statements":[{"errorCall":{"arguments":[{"id":2150,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"19896:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2149,"name":"InvalidCommandType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"19877:18:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19877:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2152,"nodeType":"RevertStatement","src":"19870:34:16"}]},"id":2154,"nodeType":"IfStatement","src":"19470:457:16","trueBody":{"id":2148,"nodeType":"Block","src":"19510:272:16","statements":[{"assignments":[2130,2132],"declarations":[{"constant":false,"id":2130,"mutability":"mutable","name":"value","nameLocation":"19621:5:16","nodeType":"VariableDeclaration","scope":2148,"src":"19613:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"19613:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2132,"mutability":"mutable","name":"data","nameLocation":"19643:4:16","nodeType":"VariableDeclaration","scope":2148,"src":"19628:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2131,"name":"bytes","nodeType":"ElementaryTypeName","src":"19628:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2136,"initialValue":{"arguments":[{"id":2134,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"19667:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2133,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"19651:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19651:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"19612:62:16"},{"expression":{"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2137,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"19701:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2138,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"19710:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2139,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"19700:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2144,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"19754:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2140,"name":"ELEMENT_MARKET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"19720:14:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19735:4:16","memberName":"call","nodeType":"MemberAccess","src":"19720:19:16","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":2143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2142,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"19747:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"19720:33:16","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":2145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19720:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"19700:59:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2147,"nodeType":"ExpressionStatement","src":"19700:59:16"}]}},"id":2155,"nodeType":"IfStatement","src":"18710:1217:16","trueBody":{"id":2124,"nodeType":"Block","src":"18749:715:16","statements":[{"assignments":[2101],"declarations":[{"constant":false,"id":2101,"mutability":"mutable","name":"token","nameLocation":"18879:5:16","nodeType":"VariableDeclaration","scope":2124,"src":"18871:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2100,"name":"address","nodeType":"ElementaryTypeName","src":"18871:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2102,"nodeType":"VariableDeclarationStatement","src":"18871:13:16"},{"assignments":[2104],"declarations":[{"constant":false,"id":2104,"mutability":"mutable","name":"recipient","nameLocation":"18918:9:16","nodeType":"VariableDeclaration","scope":2124,"src":"18910:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2103,"name":"address","nodeType":"ElementaryTypeName","src":"18910:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2105,"nodeType":"VariableDeclarationStatement","src":"18910:17:16"},{"assignments":[2107],"declarations":[{"constant":false,"id":2107,"mutability":"mutable","name":"id","nameLocation":"18961:2:16","nodeType":"VariableDeclaration","scope":2124,"src":"18953:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2106,"name":"uint256","nodeType":"ElementaryTypeName","src":"18953:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2108,"nodeType":"VariableDeclarationStatement","src":"18953:10:16"},{"assignments":[2110],"declarations":[{"constant":false,"id":2110,"mutability":"mutable","name":"amount","nameLocation":"18997:6:16","nodeType":"VariableDeclaration","scope":2124,"src":"18989:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2109,"name":"uint256","nodeType":"ElementaryTypeName","src":"18989:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2111,"nodeType":"VariableDeclarationStatement","src":"18989:14:16"},{"AST":{"nodeType":"YulBlock","src":"19038:322:16","statements":[{"nodeType":"YulAssignment","src":"19068:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"19090:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"19077:12:16"},"nodeType":"YulFunctionCall","src":"19077:27:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"19068:5:16"}]},{"nodeType":"YulAssignment","src":"19133:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"19163:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"19178:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19159:3:16"},"nodeType":"YulFunctionCall","src":"19159:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"19146:12:16"},"nodeType":"YulFunctionCall","src":"19146:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"19133:9:16"}]},{"nodeType":"YulAssignment","src":"19213:44:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"19236:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"19251:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19232:3:16"},"nodeType":"YulFunctionCall","src":"19232:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"19219:12:16"},"nodeType":"YulFunctionCall","src":"19219:38:16"},"variableNames":[{"name":"id","nodeType":"YulIdentifier","src":"19213:2:16"}]},{"nodeType":"YulAssignment","src":"19286:48:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"19313:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"19328:4:16","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19309:3:16"},"nodeType":"YulFunctionCall","src":"19309:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"19296:12:16"},"nodeType":"YulFunctionCall","src":"19296:38:16"},"variableNames":[{"name":"amount","nodeType":"YulIdentifier","src":"19286:6:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2110,"isOffset":false,"isSlot":false,"src":"19286:6:16","valueSize":1},{"declaration":2107,"isOffset":false,"isSlot":false,"src":"19213:2:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"19090:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"19163:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"19236:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"19313:13:16","suffix":"offset","valueSize":1},{"declaration":2104,"isOffset":false,"isSlot":false,"src":"19133:9:16","valueSize":1},{"declaration":2101,"isOffset":false,"isSlot":false,"src":"19068:5:16","valueSize":1}],"id":2112,"nodeType":"InlineAssembly","src":"19029:331:16"},{"expression":{"arguments":[{"id":2116,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2101,"src":"19407:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2118,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"19418:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2117,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"19414:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19414:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2120,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"19430:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2121,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2110,"src":"19434:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2113,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"19385:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19394:12:16","memberName":"sweepERC1155","nodeType":"MemberAccess","referencedDeclaration":3429,"src":"19385:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19385:56:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2123,"nodeType":"ExpressionStatement","src":"19385:56:16"}]}},"id":2156,"nodeType":"IfStatement","src":"18561:1366:16","trueBody":{"id":2095,"nodeType":"Block","src":"18597:107:16","statements":[{"expression":{"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2086,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"18624:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2087,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"18633:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2088,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18623:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2090,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"18662:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2091,"name":"FOUNDATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2638,"src":"18670:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2089,"name":"callAndTransfer721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"18643:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_address_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes calldata,address) returns (bool,bytes memory)"}},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18643:38:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"18623:58:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2094,"nodeType":"ExpressionStatement","src":"18623:58:16"}]}},"id":2157,"nodeType":"IfStatement","src":"18418:1509:16","trueBody":{"id":2081,"nodeType":"Block","src":"18453:102:16","statements":[{"expression":{"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2072,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"18480:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2073,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"18489:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2074,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18479:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2076,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"18519:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2077,"name":"X2Y2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"18527:4:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2075,"name":"callAndTransfer1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"18499:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_address_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes calldata,address) returns (bool,bytes memory)"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18499:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"18479:53:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2080,"nodeType":"ExpressionStatement","src":"18479:53:16"}]}},"id":2158,"nodeType":"IfStatement","src":"18114:1813:16","trueBody":{"id":2067,"nodeType":"Block","src":"18145:267:16","statements":[{"assignments":[2049,2051],"declarations":[{"constant":false,"id":2049,"mutability":"mutable","name":"value","nameLocation":"18256:5:16","nodeType":"VariableDeclaration","scope":2067,"src":"18248:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2048,"name":"uint256","nodeType":"ElementaryTypeName","src":"18248:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2051,"mutability":"mutable","name":"data","nameLocation":"18278:4:16","nodeType":"VariableDeclaration","scope":2067,"src":"18263:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2050,"name":"bytes","nodeType":"ElementaryTypeName","src":"18263:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2055,"initialValue":{"arguments":[{"id":2053,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"18302:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2052,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"18286:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":2054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18286:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"18247:62:16"},{"expression":{"id":2065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2056,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"18336:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2057,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"18345:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2058,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18335:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2063,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"18384:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2059,"name":"NFT20_ZAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"18355:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18365:4:16","memberName":"call","nodeType":"MemberAccess","src":"18355:14:16","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":2062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2061,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"18377:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"18355:28:16","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":2064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18355:34:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"18335:54:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2066,"nodeType":"ExpressionStatement","src":"18335:54:16"}]}},"id":2159,"nodeType":"IfStatement","src":"17808:2119:16","trueBody":{"id":2043,"nodeType":"Block","src":"17842:266:16","statements":[{"assignments":[2025,2027],"declarations":[{"constant":false,"id":2025,"mutability":"mutable","name":"value","nameLocation":"17953:5:16","nodeType":"VariableDeclaration","scope":2043,"src":"17945:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2024,"name":"uint256","nodeType":"ElementaryTypeName","src":"17945:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2027,"mutability":"mutable","name":"data","nameLocation":"17975:4:16","nodeType":"VariableDeclaration","scope":2043,"src":"17960:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2026,"name":"bytes","nodeType":"ElementaryTypeName","src":"17960:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2031,"initialValue":{"arguments":[{"id":2029,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"17999:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2028,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"17983:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17983:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"17944:62:16"},{"expression":{"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2032,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"18033:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2033,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"18042:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2034,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18032:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2039,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"18080:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2035,"name":"SUDOSWAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"18052:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18061:4:16","memberName":"call","nodeType":"MemberAccess","src":"18052:13:16","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":2038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2037,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"18073:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"18052:27:16","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":2040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18052:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"18032:53:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2042,"nodeType":"ExpressionStatement","src":"18032:53:16"}]}},"id":2160,"nodeType":"IfStatement","src":"17667:2260:16","trueBody":{"id":2019,"nodeType":"Block","src":"17701:101:16","statements":[{"expression":{"id":2017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2010,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"17728:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2011,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"17737:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2012,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17727:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2014,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"17766:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2015,"name":"X2Y2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"17774:4:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2013,"name":"callAndTransfer721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"17747:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_address_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes calldata,address) returns (bool,bytes memory)"}},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17747:32:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"17727:52:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2018,"nodeType":"ExpressionStatement","src":"17727:52:16"}]}}]},"id":2162,"nodeType":"IfStatement","src":"12459:7486:16","trueBody":{"id":2005,"nodeType":"Block","src":"12501:5138:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1766,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"12527:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1767,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"12538:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12547:12:16","memberName":"SEAPORT_V1_5","nodeType":"MemberAccess","referencedDeclaration":2951,"src":"12538:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12527:32:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1790,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"13682:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1791,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"13693:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13702:13:16","memberName":"LOOKS_RARE_V2","nodeType":"MemberAccess","referencedDeclaration":2954,"src":"13693:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13682:33:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1817,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"14140:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1818,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"14151:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14160:4:16","memberName":"NFTX","nodeType":"MemberAccess","referencedDeclaration":2957,"src":"14151:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14140:24:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1841,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"14442:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1842,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"14453:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14462:11:16","memberName":"CRYPTOPUNKS","nodeType":"MemberAccess","referencedDeclaration":2960,"src":"14453:20:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14442:31:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1893,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"15386:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1894,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"15397:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15406:15:16","memberName":"OWNER_CHECK_721","nodeType":"MemberAccess","referencedDeclaration":2963,"src":"15397:24:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15386:35:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1931,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"16098:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1932,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"16109:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16118:16:16","memberName":"OWNER_CHECK_1155","nodeType":"MemberAccess","referencedDeclaration":2966,"src":"16109:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16098:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1973,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"16961:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1974,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"16972:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16981:12:16","memberName":"SWEEP_ERC721","nodeType":"MemberAccess","referencedDeclaration":2969,"src":"16972:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16961:32:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1998,"nodeType":"IfStatement","src":"16957:618:16","trueBody":{"id":1997,"nodeType":"Block","src":"16995:580:16","statements":[{"assignments":[1978],"declarations":[{"constant":false,"id":1978,"mutability":"mutable","name":"token","nameLocation":"17116:5:16","nodeType":"VariableDeclaration","scope":1997,"src":"17108:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1977,"name":"address","nodeType":"ElementaryTypeName","src":"17108:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1979,"nodeType":"VariableDeclarationStatement","src":"17108:13:16"},{"assignments":[1981],"declarations":[{"constant":false,"id":1981,"mutability":"mutable","name":"recipient","nameLocation":"17155:9:16","nodeType":"VariableDeclaration","scope":1997,"src":"17147:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1980,"name":"address","nodeType":"ElementaryTypeName","src":"17147:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1982,"nodeType":"VariableDeclarationStatement","src":"17147:17:16"},{"assignments":[1984],"declarations":[{"constant":false,"id":1984,"mutability":"mutable","name":"id","nameLocation":"17198:2:16","nodeType":"VariableDeclaration","scope":1997,"src":"17190:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"17190:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1985,"nodeType":"VariableDeclarationStatement","src":"17190:10:16"},{"AST":{"nodeType":"YulBlock","src":"17235:245:16","statements":[{"nodeType":"YulAssignment","src":"17265:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"17287:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"17274:12:16"},"nodeType":"YulFunctionCall","src":"17274:27:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"17265:5:16"}]},{"nodeType":"YulAssignment","src":"17330:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"17360:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"17375:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17356:3:16"},"nodeType":"YulFunctionCall","src":"17356:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"17343:12:16"},"nodeType":"YulFunctionCall","src":"17343:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"17330:9:16"}]},{"nodeType":"YulAssignment","src":"17410:44:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"17433:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"17448:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17429:3:16"},"nodeType":"YulFunctionCall","src":"17429:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"17416:12:16"},"nodeType":"YulFunctionCall","src":"17416:38:16"},"variableNames":[{"name":"id","nodeType":"YulIdentifier","src":"17410:2:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1984,"isOffset":false,"isSlot":false,"src":"17410:2:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"17287:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"17360:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"17433:13:16","suffix":"offset","valueSize":1},{"declaration":1981,"isOffset":false,"isSlot":false,"src":"17330:9:16","valueSize":1},{"declaration":1978,"isOffset":false,"isSlot":false,"src":"17265:5:16","valueSize":1}],"id":1986,"nodeType":"InlineAssembly","src":"17226:254:16"},{"expression":{"arguments":[{"id":1990,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"17526:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1992,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"17537:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1991,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"17533:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17533:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"17549:2:16","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":1987,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"17505:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17514:11:16","memberName":"sweepERC721","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"17505:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17505:47:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"17505:47:16"}]}},"id":1999,"nodeType":"IfStatement","src":"16094:1481:16","trueBody":{"id":1972,"nodeType":"Block","src":"16136:815:16","statements":[{"assignments":[1936],"declarations":[{"constant":false,"id":1936,"mutability":"mutable","name":"owner","nameLocation":"16266:5:16","nodeType":"VariableDeclaration","scope":1972,"src":"16258:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1935,"name":"address","nodeType":"ElementaryTypeName","src":"16258:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1937,"nodeType":"VariableDeclarationStatement","src":"16258:13:16"},{"assignments":[1939],"declarations":[{"constant":false,"id":1939,"mutability":"mutable","name":"token","nameLocation":"16305:5:16","nodeType":"VariableDeclaration","scope":1972,"src":"16297:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1938,"name":"address","nodeType":"ElementaryTypeName","src":"16297:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1940,"nodeType":"VariableDeclarationStatement","src":"16297:13:16"},{"assignments":[1942],"declarations":[{"constant":false,"id":1942,"mutability":"mutable","name":"id","nameLocation":"16344:2:16","nodeType":"VariableDeclaration","scope":1972,"src":"16336:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1941,"name":"uint256","nodeType":"ElementaryTypeName","src":"16336:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1943,"nodeType":"VariableDeclarationStatement","src":"16336:10:16"},{"assignments":[1945],"declarations":[{"constant":false,"id":1945,"mutability":"mutable","name":"minBalance","nameLocation":"16380:10:16","nodeType":"VariableDeclaration","scope":1972,"src":"16372:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1944,"name":"uint256","nodeType":"ElementaryTypeName","src":"16372:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1946,"nodeType":"VariableDeclarationStatement","src":"16372:18:16"},{"AST":{"nodeType":"YulBlock","src":"16425:322:16","statements":[{"nodeType":"YulAssignment","src":"16455:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"16477:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16464:12:16"},"nodeType":"YulFunctionCall","src":"16464:27:16"},"variableNames":[{"name":"owner","nodeType":"YulIdentifier","src":"16455:5:16"}]},{"nodeType":"YulAssignment","src":"16520:47:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"16546:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"16561:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16542:3:16"},"nodeType":"YulFunctionCall","src":"16542:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16529:12:16"},"nodeType":"YulFunctionCall","src":"16529:38:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"16520:5:16"}]},{"nodeType":"YulAssignment","src":"16596:44:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"16619:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"16634:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16615:3:16"},"nodeType":"YulFunctionCall","src":"16615:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16602:12:16"},"nodeType":"YulFunctionCall","src":"16602:38:16"},"variableNames":[{"name":"id","nodeType":"YulIdentifier","src":"16596:2:16"}]},{"nodeType":"YulAssignment","src":"16669:52:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"16700:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"16715:4:16","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16696:3:16"},"nodeType":"YulFunctionCall","src":"16696:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16683:12:16"},"nodeType":"YulFunctionCall","src":"16683:38:16"},"variableNames":[{"name":"minBalance","nodeType":"YulIdentifier","src":"16669:10:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1942,"isOffset":false,"isSlot":false,"src":"16596:2:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"16477:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"16546:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"16619:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"16700:13:16","suffix":"offset","valueSize":1},{"declaration":1945,"isOffset":false,"isSlot":false,"src":"16669:10:16","valueSize":1},{"declaration":1936,"isOffset":false,"isSlot":false,"src":"16455:5:16","valueSize":1},{"declaration":1939,"isOffset":false,"isSlot":false,"src":"16520:5:16","valueSize":1}],"id":1947,"nodeType":"InlineAssembly","src":"16416:331:16"},{"expression":{"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1948,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"16772:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1953,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1936,"src":"16808:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1954,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"16815:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1950,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"16791:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1949,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"16783:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155_$8099_$","typeString":"type(contract ERC1155)"}},"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16783:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155_$8099","typeString":"contract ERC1155"}},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16798:9:16","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":7513,"src":"16783:24:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16783:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1956,"name":"minBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"16822:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16783:49:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1958,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16782:51:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16772:61:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1960,"nodeType":"ExpressionStatement","src":"16772:61:16"},{"condition":{"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16863:8:16","subExpression":{"id":1961,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"16864:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1971,"nodeType":"IfStatement","src":"16859:69:16","trueBody":{"expression":{"id":1969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1963,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"16873:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1966,"name":"InvalidOwnerERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"16899:19:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16919:8:16","memberName":"selector","nodeType":"MemberAccess","src":"16899:28:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1964,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16882:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16886:12:16","memberName":"encodePacked","nodeType":"MemberAccess","src":"16882:16:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16882:46:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"16873:55:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1970,"nodeType":"ExpressionStatement","src":"16873:55:16"}}]}},"id":2000,"nodeType":"IfStatement","src":"15382:2193:16","trueBody":{"id":1930,"nodeType":"Block","src":"15423:665:16","statements":[{"assignments":[1898],"declarations":[{"constant":false,"id":1898,"mutability":"mutable","name":"owner","nameLocation":"15544:5:16","nodeType":"VariableDeclaration","scope":1930,"src":"15536:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"15536:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1899,"nodeType":"VariableDeclarationStatement","src":"15536:13:16"},{"assignments":[1901],"declarations":[{"constant":false,"id":1901,"mutability":"mutable","name":"token","nameLocation":"15583:5:16","nodeType":"VariableDeclaration","scope":1930,"src":"15575:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1900,"name":"address","nodeType":"ElementaryTypeName","src":"15575:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1902,"nodeType":"VariableDeclarationStatement","src":"15575:13:16"},{"assignments":[1904],"declarations":[{"constant":false,"id":1904,"mutability":"mutable","name":"id","nameLocation":"15622:2:16","nodeType":"VariableDeclaration","scope":1930,"src":"15614:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"15614:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1905,"nodeType":"VariableDeclarationStatement","src":"15614:10:16"},{"AST":{"nodeType":"YulBlock","src":"15659:241:16","statements":[{"nodeType":"YulAssignment","src":"15689:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"15711:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15698:12:16"},"nodeType":"YulFunctionCall","src":"15698:27:16"},"variableNames":[{"name":"owner","nodeType":"YulIdentifier","src":"15689:5:16"}]},{"nodeType":"YulAssignment","src":"15754:47:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"15780:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"15795:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15776:3:16"},"nodeType":"YulFunctionCall","src":"15776:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15763:12:16"},"nodeType":"YulFunctionCall","src":"15763:38:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"15754:5:16"}]},{"nodeType":"YulAssignment","src":"15830:44:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"15853:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"15868:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15849:3:16"},"nodeType":"YulFunctionCall","src":"15849:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15836:12:16"},"nodeType":"YulFunctionCall","src":"15836:38:16"},"variableNames":[{"name":"id","nodeType":"YulIdentifier","src":"15830:2:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1904,"isOffset":false,"isSlot":false,"src":"15830:2:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"15711:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"15780:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"15853:13:16","suffix":"offset","valueSize":1},{"declaration":1898,"isOffset":false,"isSlot":false,"src":"15689:5:16","valueSize":1},{"declaration":1901,"isOffset":false,"isSlot":false,"src":"15754:5:16","valueSize":1}],"id":1906,"nodeType":"InlineAssembly","src":"15650:250:16"},{"expression":{"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1907,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"15925:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1912,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"15958:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1909,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"15943:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1908,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"15936:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$9075_$","typeString":"type(contract ERC721)"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15936:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$9075","typeString":"contract ERC721"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15950:7:16","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":8600,"src":"15936:21:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15936:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1914,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"15965:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15936:34:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1916,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15935:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15925:46:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1918,"nodeType":"ExpressionStatement","src":"15925:46:16"},{"condition":{"id":1920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16001:8:16","subExpression":{"id":1919,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"16002:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1929,"nodeType":"IfStatement","src":"15997:68:16","trueBody":{"expression":{"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1921,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"16011:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1924,"name":"InvalidOwnerERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"16037:18:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16056:8:16","memberName":"selector","nodeType":"MemberAccess","src":"16037:27:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1922,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16020:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16024:12:16","memberName":"encodePacked","nodeType":"MemberAccess","src":"16020:16:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16020:45:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"16011:54:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1928,"nodeType":"ExpressionStatement","src":"16011:54:16"}}]}},"id":2001,"nodeType":"IfStatement","src":"14438:3137:16","trueBody":{"id":1892,"nodeType":"Block","src":"14475:901:16","statements":[{"assignments":[1846],"declarations":[{"constant":false,"id":1846,"mutability":"mutable","name":"punkId","nameLocation":"14596:6:16","nodeType":"VariableDeclaration","scope":1892,"src":"14588:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1845,"name":"uint256","nodeType":"ElementaryTypeName","src":"14588:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1847,"nodeType":"VariableDeclarationStatement","src":"14588:14:16"},{"assignments":[1849],"declarations":[{"constant":false,"id":1849,"mutability":"mutable","name":"recipient","nameLocation":"14636:9:16","nodeType":"VariableDeclaration","scope":1892,"src":"14628:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1848,"name":"address","nodeType":"ElementaryTypeName","src":"14628:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1850,"nodeType":"VariableDeclarationStatement","src":"14628:17:16"},{"assignments":[1852],"declarations":[{"constant":false,"id":1852,"mutability":"mutable","name":"value","nameLocation":"14679:5:16","nodeType":"VariableDeclaration","scope":1892,"src":"14671:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1851,"name":"uint256","nodeType":"ElementaryTypeName","src":"14671:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1853,"nodeType":"VariableDeclarationStatement","src":"14671:13:16"},{"AST":{"nodeType":"YulBlock","src":"14719:249:16","statements":[{"nodeType":"YulAssignment","src":"14749:37:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"14772:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14759:12:16"},"nodeType":"YulFunctionCall","src":"14759:27:16"},"variableNames":[{"name":"punkId","nodeType":"YulIdentifier","src":"14749:6:16"}]},{"nodeType":"YulAssignment","src":"14815:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"14845:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"14860:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14841:3:16"},"nodeType":"YulFunctionCall","src":"14841:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14828:12:16"},"nodeType":"YulFunctionCall","src":"14828:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"14815:9:16"}]},{"nodeType":"YulAssignment","src":"14895:47:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"14921:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"14936:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14917:3:16"},"nodeType":"YulFunctionCall","src":"14917:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14904:12:16"},"nodeType":"YulFunctionCall","src":"14904:38:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14895:5:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1249,"isOffset":true,"isSlot":false,"src":"14772:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"14845:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"14921:13:16","suffix":"offset","valueSize":1},{"declaration":1846,"isOffset":false,"isSlot":false,"src":"14749:6:16","valueSize":1},{"declaration":1849,"isOffset":false,"isSlot":false,"src":"14815:9:16","valueSize":1},{"declaration":1852,"isOffset":false,"isSlot":false,"src":"14895:5:16","valueSize":1}],"id":1854,"nodeType":"InlineAssembly","src":"14710:258:16"},{"expression":{"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1855,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"14994:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1856,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"15003:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1857,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14993:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"expression":{"id":1864,"name":"ICryptoPunksMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"15096:18:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICryptoPunksMarket_$2873_$","typeString":"type(contract ICryptoPunksMarket)"}},"id":1865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15115:7:16","memberName":"buyPunk","nodeType":"MemberAccess","referencedDeclaration":2864,"src":"15096:26:16","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_uint256_$returns$__$","typeString":"function ICryptoPunksMarket.buyPunk(uint256) payable"}},"id":1866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15123:8:16","memberName":"selector","nodeType":"MemberAccess","src":"15096:35:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":1867,"name":"punkId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1846,"src":"15133:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1862,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15073:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15077:18:16","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15073:22:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15073:67:16","tryCall":false,"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":1858,"name":"CRYPTOPUNKS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"15013:11:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15025:4:16","memberName":"call","nodeType":"MemberAccess","src":"15013:16:16","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":1861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1860,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1852,"src":"15037:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"15013:30:16","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":1869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15013:153:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"14993:173:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1871,"nodeType":"ExpressionStatement","src":"14993:173:16"},{"condition":{"id":1872,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"15196:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1883,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"15304:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1886,"name":"BuyPunkFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"15330:13:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15344:8:16","memberName":"selector","nodeType":"MemberAccess","src":"15330:22:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1884,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15313:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15317:12:16","memberName":"encodePacked","nodeType":"MemberAccess","src":"15313:16:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15313:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"15304:49:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1890,"nodeType":"ExpressionStatement","src":"15304:49:16"},"id":1891,"nodeType":"IfStatement","src":"15192:161:16","trueBody":{"expression":{"arguments":[{"arguments":[{"id":1878,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1849,"src":"15254:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1877,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"15250:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15250:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1880,"name":"punkId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1846,"src":"15266:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1874,"name":"CRYPTOPUNKS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"15224:11:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1873,"name":"ICryptoPunksMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"15205:18:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICryptoPunksMarket_$2873_$","typeString":"type(contract ICryptoPunksMarket)"}},"id":1875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15205:31:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICryptoPunksMarket_$2873","typeString":"contract ICryptoPunksMarket"}},"id":1876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15237:12:16","memberName":"transferPunk","nodeType":"MemberAccess","referencedDeclaration":2872,"src":"15205:44:16","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15205:68:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1882,"nodeType":"ExpressionStatement","src":"15205:68:16"}}]}},"id":2002,"nodeType":"IfStatement","src":"14136:3439:16","trueBody":{"id":1840,"nodeType":"Block","src":"14166:266:16","statements":[{"assignments":[1822,1824],"declarations":[{"constant":false,"id":1822,"mutability":"mutable","name":"value","nameLocation":"14277:5:16","nodeType":"VariableDeclaration","scope":1840,"src":"14269:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1821,"name":"uint256","nodeType":"ElementaryTypeName","src":"14269:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1824,"mutability":"mutable","name":"data","nameLocation":"14299:4:16","nodeType":"VariableDeclaration","scope":1840,"src":"14284:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1823,"name":"bytes","nodeType":"ElementaryTypeName","src":"14284:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1828,"initialValue":{"arguments":[{"id":1826,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"14323:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1825,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"14307:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14307:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"14268:62:16"},{"expression":{"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1829,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"14357:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1830,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"14366:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1831,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14356:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1836,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1824,"src":"14404:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1832,"name":"NFTX_ZAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"14376:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14385:4:16","memberName":"call","nodeType":"MemberAccess","src":"14376:13:16","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":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1822,"src":"14397:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"14376:27:16","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":1837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14376:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"14356:53:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1839,"nodeType":"ExpressionStatement","src":"14356:53:16"}]}},"id":2003,"nodeType":"IfStatement","src":"13678:3897:16","trueBody":{"id":1816,"nodeType":"Block","src":"13717:413:16","statements":[{"assignments":[1795],"declarations":[{"constant":false,"id":1795,"mutability":"mutable","name":"value","nameLocation":"13827:5:16","nodeType":"VariableDeclaration","scope":1816,"src":"13819:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1794,"name":"uint256","nodeType":"ElementaryTypeName","src":"13819:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1796,"nodeType":"VariableDeclarationStatement","src":"13819:13:16"},{"AST":{"nodeType":"YulBlock","src":"13867:92:16","statements":[{"nodeType":"YulAssignment","src":"13897:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"13919:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13906:12:16"},"nodeType":"YulFunctionCall","src":"13906:27:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13897:5:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1249,"isOffset":true,"isSlot":false,"src":"13919:13:16","suffix":"offset","valueSize":1},{"declaration":1795,"isOffset":false,"isSlot":false,"src":"13897:5:16","valueSize":1}],"id":1797,"nodeType":"InlineAssembly","src":"13858:101:16"},{"assignments":[1799],"declarations":[{"constant":false,"id":1799,"mutability":"mutable","name":"data","nameLocation":"13999:4:16","nodeType":"VariableDeclaration","scope":1816,"src":"13984:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1798,"name":"bytes","nodeType":"ElementaryTypeName","src":"13984:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1804,"initialValue":{"arguments":[{"hexValue":"31","id":1802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14021:1:16","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":1800,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"14006:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14013:7:16","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"14006:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14006:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"13984:39:16"},{"expression":{"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1805,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"14050:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1806,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"14059:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1807,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14049:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1812,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"14102:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1808,"name":"LOOKS_RARE_V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"14069:13:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14083:4:16","memberName":"call","nodeType":"MemberAccess","src":"14069:18:16","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":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"14095:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"14069:32:16","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":1813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14069:38:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"14049:58:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1815,"nodeType":"ExpressionStatement","src":"14049:58:16"}]}},"id":2004,"nodeType":"IfStatement","src":"12523:5052:16","trueBody":{"id":1789,"nodeType":"Block","src":"12561:1111:16","statements":[{"assignments":[1771,1773],"declarations":[{"constant":false,"id":1771,"mutability":"mutable","name":"value","nameLocation":"13513:5:16","nodeType":"VariableDeclaration","scope":1789,"src":"13505:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1770,"name":"uint256","nodeType":"ElementaryTypeName","src":"13505:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1773,"mutability":"mutable","name":"data","nameLocation":"13535:4:16","nodeType":"VariableDeclaration","scope":1789,"src":"13520:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1772,"name":"bytes","nodeType":"ElementaryTypeName","src":"13520:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"documentation":"@dev Seaport 1.4 and 1.5 allow for orders to be created by contracts.\n     These orders pass control to the contract offerers during fufillment,\n         allowing them to perform any number of destructive actions as a holder of the NFT.\n     Integrators should be aware that in some scenarios: e.g. purchasing an NFT that allows the holder\n         to claim another NFT, the contract offerer can \"steal\" the claim during order fufillment.\n     For some such purchases, an OWNER_CHECK command can be prepended to ensure that all tokens have the desired owner at the end of the transaction.\n     This is also outlined in the Seaport documentation: https://github.com/ProjectOpenSea/seaport/blob/main/docs/SeaportDocumentation.md","id":1777,"initialValue":{"arguments":[{"id":1775,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"13559:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1774,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"13543:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13543:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"13504:62:16"},{"expression":{"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1778,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"13593:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1779,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"13602:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1780,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13592:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1785,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"13644:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1781,"name":"SEAPORT_V1_5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"13612:12:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13625:4:16","memberName":"call","nodeType":"MemberAccess","src":"13612:17:16","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":1784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"13637:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"13612:31:16","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":1786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13612:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"13592:57:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1788,"nodeType":"ExpressionStatement","src":"13592:57:16"}]}}]}}]},"id":2164,"nodeType":"IfStatement","src":"2065:17894:16","trueBody":{"id":1761,"nodeType":"Block","src":"2108:10285:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1278,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"2172:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1279,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"2182:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2191:17:16","memberName":"FIRST_IF_BOUNDARY","nodeType":"MemberAccess","referencedDeclaration":2924,"src":"2182:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2172:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1759,"nodeType":"Block","src":"7419:4925:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1519,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"7445:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1520,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"7456:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7465:21:16","memberName":"CLASSIC_SWAP_EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":2927,"src":"7456:30:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7445:41:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1567,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"8494:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1568,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"8505:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8514:22:16","memberName":"CLASSIC_SWAP_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":2930,"src":"8505:31:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8494:42:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1615,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"9545:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1616,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"9556:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9565:14:16","memberName":"PERMIT2_PERMIT","nodeType":"MemberAccess","referencedDeclaration":2933,"src":"9556:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9545:34:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1642,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"10090:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1643,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"10101:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10110:8:16","memberName":"WRAP_AMB","nodeType":"MemberAccess","referencedDeclaration":2936,"src":"10101:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10090:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1663,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"10596:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1664,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"10607:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10616:11:16","memberName":"UNWRAP_SAMB","nodeType":"MemberAccess","referencedDeclaration":2939,"src":"10607:20:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10596:31:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1684,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"11108:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1685,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"11119:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11128:27:16","memberName":"PERMIT2_TRANSFER_FROM_BATCH","nodeType":"MemberAccess","referencedDeclaration":2942,"src":"11119:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11108:47:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1709,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"11450:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1710,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"11461:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11470:19:16","memberName":"BALANCE_CHECK_ERC20","nodeType":"MemberAccess","referencedDeclaration":2945,"src":"11461:28:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11450:39:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1751,"nodeType":"Block","src":"12182:144:16","statements":[{"errorCall":{"arguments":[{"id":1748,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"12295:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1747,"name":"InvalidCommandType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"12276:18:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12276:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1750,"nodeType":"RevertStatement","src":"12269:34:16"}]},"id":1752,"nodeType":"IfStatement","src":"11446:880:16","trueBody":{"id":1746,"nodeType":"Block","src":"11491:685:16","statements":[{"assignments":[1714],"declarations":[{"constant":false,"id":1714,"mutability":"mutable","name":"owner","nameLocation":"11612:5:16","nodeType":"VariableDeclaration","scope":1746,"src":"11604:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1713,"name":"address","nodeType":"ElementaryTypeName","src":"11604:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1715,"nodeType":"VariableDeclarationStatement","src":"11604:13:16"},{"assignments":[1717],"declarations":[{"constant":false,"id":1717,"mutability":"mutable","name":"token","nameLocation":"11651:5:16","nodeType":"VariableDeclaration","scope":1746,"src":"11643:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1716,"name":"address","nodeType":"ElementaryTypeName","src":"11643:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1718,"nodeType":"VariableDeclarationStatement","src":"11643:13:16"},{"assignments":[1720],"declarations":[{"constant":false,"id":1720,"mutability":"mutable","name":"minBalance","nameLocation":"11690:10:16","nodeType":"VariableDeclaration","scope":1746,"src":"11682:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1719,"name":"uint256","nodeType":"ElementaryTypeName","src":"11682:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1721,"nodeType":"VariableDeclarationStatement","src":"11682:18:16"},{"AST":{"nodeType":"YulBlock","src":"11735:249:16","statements":[{"nodeType":"YulAssignment","src":"11765:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"11787:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11774:12:16"},"nodeType":"YulFunctionCall","src":"11774:27:16"},"variableNames":[{"name":"owner","nodeType":"YulIdentifier","src":"11765:5:16"}]},{"nodeType":"YulAssignment","src":"11830:47:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"11856:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"11871:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11852:3:16"},"nodeType":"YulFunctionCall","src":"11852:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11839:12:16"},"nodeType":"YulFunctionCall","src":"11839:38:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"11830:5:16"}]},{"nodeType":"YulAssignment","src":"11906:52:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"11937:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"11952:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11933:3:16"},"nodeType":"YulFunctionCall","src":"11933:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11920:12:16"},"nodeType":"YulFunctionCall","src":"11920:38:16"},"variableNames":[{"name":"minBalance","nodeType":"YulIdentifier","src":"11906:10:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1249,"isOffset":true,"isSlot":false,"src":"11787:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"11856:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"11937:13:16","suffix":"offset","valueSize":1},{"declaration":1720,"isOffset":false,"isSlot":false,"src":"11906:10:16","valueSize":1},{"declaration":1714,"isOffset":false,"isSlot":false,"src":"11765:5:16","valueSize":1},{"declaration":1717,"isOffset":false,"isSlot":false,"src":"11830:5:16","valueSize":1}],"id":1722,"nodeType":"InlineAssembly","src":"11726:258:16"},{"expression":{"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1723,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"12009:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1728,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1714,"src":"12043:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1725,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"12026:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1724,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"12020:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":1726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12020:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12033:9:16","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"12020:22:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12020:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1730,"name":"minBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1720,"src":"12053:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12020:43:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12019:45:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12009:55:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1734,"nodeType":"ExpressionStatement","src":"12009:55:16"},{"condition":{"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12094:8:16","subExpression":{"id":1735,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"12095:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1745,"nodeType":"IfStatement","src":"12090:63:16","trueBody":{"expression":{"id":1743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1737,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"12104:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1740,"name":"BalanceTooLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1244,"src":"12130:13:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12144:8:16","memberName":"selector","nodeType":"MemberAccess","src":"12130:22:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1738,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12113:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12117:12:16","memberName":"encodePacked","nodeType":"MemberAccess","src":"12113:16:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12113:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12104:49:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1744,"nodeType":"ExpressionStatement","src":"12104:49:16"}}]}},"id":1753,"nodeType":"IfStatement","src":"11104:1222:16","trueBody":{"id":1708,"nodeType":"Block","src":"11157:283:16","statements":[{"assignments":[1693],"declarations":[{"constant":false,"id":1693,"mutability":"mutable","name":"batchDetails","nameLocation":"11237:12:16","nodeType":"VariableDeclaration","scope":1708,"src":"11184:65:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"},"typeName":{"baseType":{"id":1691,"nodeType":"UserDefinedTypeName","pathNode":{"id":1690,"name":"IAllowanceTransfer.AllowanceTransferDetails","nameLocations":["11184:18:16","11203:24:16"],"nodeType":"IdentifierPath","referencedDeclaration":6511,"src":"11184:43:16"},"referencedDeclaration":6511,"src":"11184:43:16","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails"}},"id":1692,"nodeType":"ArrayTypeName","src":"11184:45:16","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"}},"visibility":"internal"}],"id":1702,"initialValue":{"arguments":[{"id":1696,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"11292:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"baseExpression":{"expression":{"id":1697,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"11301:18:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAllowanceTransfer_$6600_$","typeString":"type(contract IAllowanceTransfer)"}},"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11320:24:16","memberName":"AllowanceTransferDetails","nodeType":"MemberAccess","referencedDeclaration":6511,"src":"11301:43:16","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AllowanceTransferDetails_$6511_storage_ptr_$","typeString":"type(struct IAllowanceTransfer.AllowanceTransferDetails storage pointer)"}},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11301:45:16","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr_$","typeString":"type(struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory)"}}],"id":1700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11300:47:16","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr_$","typeString":"type(struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr_$","typeString":"type(struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory)"}],"expression":{"id":1694,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11281:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11285:6:16","memberName":"decode","nodeType":"MemberAccess","src":"11281:10:16","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11281:67:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11183:165:16"},{"expression":{"arguments":[{"id":1704,"name":"batchDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1693,"src":"11394:12:16","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory"}},{"id":1705,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"11408:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1703,"name":"permit2TransferFrom","nodeType":"Identifier","overloadedDeclarations":[3586,3630],"referencedDeclaration":3630,"src":"11374:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory,address)"}},"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11374:43:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1707,"nodeType":"ExpressionStatement","src":"11374:43:16"}]}},"id":1754,"nodeType":"IfStatement","src":"10592:1734:16","trueBody":{"id":1683,"nodeType":"Block","src":"10629:469:16","statements":[{"assignments":[1668],"declarations":[{"constant":false,"id":1668,"mutability":"mutable","name":"recipient","nameLocation":"10741:9:16","nodeType":"VariableDeclaration","scope":1683,"src":"10733:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1667,"name":"address","nodeType":"ElementaryTypeName","src":"10733:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1669,"nodeType":"VariableDeclarationStatement","src":"10733:17:16"},{"assignments":[1671],"declarations":[{"constant":false,"id":1671,"mutability":"mutable","name":"amountMin","nameLocation":"10784:9:16","nodeType":"VariableDeclaration","scope":1683,"src":"10776:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1670,"name":"uint256","nodeType":"ElementaryTypeName","src":"10776:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1672,"nodeType":"VariableDeclarationStatement","src":"10776:17:16"},{"AST":{"nodeType":"YulBlock","src":"10828:176:16","statements":[{"nodeType":"YulAssignment","src":"10858:40:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"10884:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10871:12:16"},"nodeType":"YulFunctionCall","src":"10871:27:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"10858:9:16"}]},{"nodeType":"YulAssignment","src":"10927:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"10957:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"10972:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10953:3:16"},"nodeType":"YulFunctionCall","src":"10953:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10940:12:16"},"nodeType":"YulFunctionCall","src":"10940:38:16"},"variableNames":[{"name":"amountMin","nodeType":"YulIdentifier","src":"10927:9:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1671,"isOffset":false,"isSlot":false,"src":"10927:9:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"10884:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"10957:13:16","suffix":"offset","valueSize":1},{"declaration":1668,"isOffset":false,"isSlot":false,"src":"10858:9:16","valueSize":1}],"id":1673,"nodeType":"InlineAssembly","src":"10819:185:16"},{"expression":{"arguments":[{"arguments":[{"id":1678,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"11053:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1677,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"11049:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11049:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1680,"name":"amountMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1671,"src":"11065:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1674,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"11029:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11038:10:16","memberName":"unwrapSAMB","nodeType":"MemberAccess","referencedDeclaration":3543,"src":"11029:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11029:46:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1682,"nodeType":"ExpressionStatement","src":"11029:46:16"}]}},"id":1755,"nodeType":"IfStatement","src":"10086:2240:16","trueBody":{"id":1662,"nodeType":"Block","src":"10120:466:16","statements":[{"assignments":[1647],"declarations":[{"constant":false,"id":1647,"mutability":"mutable","name":"recipient","nameLocation":"10232:9:16","nodeType":"VariableDeclaration","scope":1662,"src":"10224:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"10224:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1648,"nodeType":"VariableDeclarationStatement","src":"10224:17:16"},{"assignments":[1650],"declarations":[{"constant":false,"id":1650,"mutability":"mutable","name":"amountMin","nameLocation":"10275:9:16","nodeType":"VariableDeclaration","scope":1662,"src":"10267:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1649,"name":"uint256","nodeType":"ElementaryTypeName","src":"10267:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1651,"nodeType":"VariableDeclarationStatement","src":"10267:17:16"},{"AST":{"nodeType":"YulBlock","src":"10319:176:16","statements":[{"nodeType":"YulAssignment","src":"10349:40:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"10375:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10362:12:16"},"nodeType":"YulFunctionCall","src":"10362:27:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"10349:9:16"}]},{"nodeType":"YulAssignment","src":"10418:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"10448:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"10463:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10444:3:16"},"nodeType":"YulFunctionCall","src":"10444:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10431:12:16"},"nodeType":"YulFunctionCall","src":"10431:38:16"},"variableNames":[{"name":"amountMin","nodeType":"YulIdentifier","src":"10418:9:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1650,"isOffset":false,"isSlot":false,"src":"10418:9:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"10375:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"10448:13:16","suffix":"offset","valueSize":1},{"declaration":1647,"isOffset":false,"isSlot":false,"src":"10349:9:16","valueSize":1}],"id":1652,"nodeType":"InlineAssembly","src":"10310:185:16"},{"expression":{"arguments":[{"arguments":[{"id":1657,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"10541:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1656,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"10537:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10537:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1659,"name":"amountMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"10553:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1653,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"10520:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10529:7:16","memberName":"wrapAMB","nodeType":"MemberAccess","referencedDeclaration":3491,"src":"10520:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10520:43:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1661,"nodeType":"ExpressionStatement","src":"10520:43:16"}]}},"id":1756,"nodeType":"IfStatement","src":"9541:2785:16","trueBody":{"id":1641,"nodeType":"Block","src":"9581:499:16","statements":[{"assignments":[1623],"declarations":[{"constant":false,"id":1623,"mutability":"mutable","name":"permitSingle","nameLocation":"9748:12:16","nodeType":"VariableDeclaration","scope":1641,"src":"9707:53:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"},"typeName":{"id":1622,"nodeType":"UserDefinedTypeName","pathNode":{"id":1621,"name":"IAllowanceTransfer.PermitSingle","nameLocations":["9707:18:16","9726:12:16"],"nodeType":"IdentifierPath","referencedDeclaration":6481,"src":"9707:31:16"},"referencedDeclaration":6481,"src":"9707:31:16","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_storage_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"}},"visibility":"internal"}],"id":1624,"nodeType":"VariableDeclarationStatement","src":"9707:53:16"},{"AST":{"nodeType":"YulBlock","src":"9795:85:16","statements":[{"nodeType":"YulAssignment","src":"9825:29:16","value":{"name":"inputs.offset","nodeType":"YulIdentifier","src":"9841:13:16"},"variableNames":[{"name":"permitSingle","nodeType":"YulIdentifier","src":"9825:12:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1249,"isOffset":true,"isSlot":false,"src":"9841:13:16","suffix":"offset","valueSize":1},{"declaration":1623,"isOffset":false,"isSlot":false,"src":"9825:12:16","valueSize":1}],"id":1625,"nodeType":"InlineAssembly","src":"9786:94:16"},{"assignments":[1627],"declarations":[{"constant":false,"id":1627,"mutability":"mutable","name":"data","nameLocation":"9920:4:16","nodeType":"VariableDeclaration","scope":1641,"src":"9905:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1626,"name":"bytes","nodeType":"ElementaryTypeName","src":"9905:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1632,"initialValue":{"arguments":[{"hexValue":"36","id":1630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9942:1:16","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"}],"expression":{"id":1628,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"9927:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9934:7:16","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"9927:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9927:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"9905:39:16"},{"expression":{"arguments":[{"id":1636,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"10028:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1637,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1623,"src":"10038:12:16","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitSingle calldata"}},{"id":1638,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1627,"src":"10052:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PermitSingle_$6481_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitSingle calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1633,"name":"PERMIT2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"10013:7:16","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10021:6:16","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":6550,"src":"10013:14:16","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_struct$_PermitSingle_$6481_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,struct IAllowanceTransfer.PermitSingle memory,bytes memory) external"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10013:44:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1640,"nodeType":"ExpressionStatement","src":"10013:44:16"}]}},"id":1757,"nodeType":"IfStatement","src":"8490:3836:16","trueBody":{"id":1614,"nodeType":"Block","src":"8538:997:16","statements":[{"assignments":[1572],"declarations":[{"constant":false,"id":1572,"mutability":"mutable","name":"recipient","nameLocation":"8672:9:16","nodeType":"VariableDeclaration","scope":1614,"src":"8664:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1571,"name":"address","nodeType":"ElementaryTypeName","src":"8664:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1573,"nodeType":"VariableDeclarationStatement","src":"8664:17:16"},{"assignments":[1575],"declarations":[{"constant":false,"id":1575,"mutability":"mutable","name":"amountOut","nameLocation":"8715:9:16","nodeType":"VariableDeclaration","scope":1614,"src":"8707:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1574,"name":"uint256","nodeType":"ElementaryTypeName","src":"8707:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1576,"nodeType":"VariableDeclarationStatement","src":"8707:17:16"},{"assignments":[1578],"declarations":[{"constant":false,"id":1578,"mutability":"mutable","name":"amountInMax","nameLocation":"8758:11:16","nodeType":"VariableDeclaration","scope":1614,"src":"8750:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1577,"name":"uint256","nodeType":"ElementaryTypeName","src":"8750:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1579,"nodeType":"VariableDeclarationStatement","src":"8750:19:16"},{"assignments":[1581],"declarations":[{"constant":false,"id":1581,"mutability":"mutable","name":"payerIsUser","nameLocation":"8800:11:16","nodeType":"VariableDeclaration","scope":1614,"src":"8795:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1580,"name":"bool","nodeType":"ElementaryTypeName","src":"8795:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1582,"nodeType":"VariableDeclarationStatement","src":"8795:16:16"},{"AST":{"nodeType":"YulBlock","src":"8846:410:16","statements":[{"nodeType":"YulAssignment","src":"8876:40:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"8902:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8889:12:16"},"nodeType":"YulFunctionCall","src":"8889:27:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"8876:9:16"}]},{"nodeType":"YulAssignment","src":"8945:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"8975:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"8990:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8971:3:16"},"nodeType":"YulFunctionCall","src":"8971:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8958:12:16"},"nodeType":"YulFunctionCall","src":"8958:38:16"},"variableNames":[{"name":"amountOut","nodeType":"YulIdentifier","src":"8945:9:16"}]},{"nodeType":"YulAssignment","src":"9025:53:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"9057:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"9072:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9053:3:16"},"nodeType":"YulFunctionCall","src":"9053:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9040:12:16"},"nodeType":"YulFunctionCall","src":"9040:38:16"},"variableNames":[{"name":"amountInMax","nodeType":"YulIdentifier","src":"9025:11:16"}]},{"nodeType":"YulAssignment","src":"9177:53:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"9209:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"9224:4:16","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9205:3:16"},"nodeType":"YulFunctionCall","src":"9205:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9192:12:16"},"nodeType":"YulFunctionCall","src":"9192:38:16"},"variableNames":[{"name":"payerIsUser","nodeType":"YulIdentifier","src":"9177:11:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1578,"isOffset":false,"isSlot":false,"src":"9025:11:16","valueSize":1},{"declaration":1575,"isOffset":false,"isSlot":false,"src":"8945:9:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"8902:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"8975:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"9057:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"9209:13:16","suffix":"offset","valueSize":1},{"declaration":1581,"isOffset":false,"isSlot":false,"src":"9177:11:16","valueSize":1},{"declaration":1572,"isOffset":false,"isSlot":false,"src":"8876:9:16","valueSize":1}],"id":1583,"nodeType":"InlineAssembly","src":"8837:419:16"},{"assignments":[1588],"declarations":[{"constant":false,"id":1588,"mutability":"mutable","name":"path","nameLocation":"9300:4:16","nodeType":"VariableDeclaration","scope":1614,"src":"9281:23:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1586,"name":"address","nodeType":"ElementaryTypeName","src":"9281:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1587,"nodeType":"ArrayTypeName","src":"9281:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":1593,"initialValue":{"arguments":[{"hexValue":"33","id":1591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9329:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"expression":{"id":1589,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"9307:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9314:14:16","memberName":"toAddressArray","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"9307:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_array$_t_address_$dyn_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address[] calldata)"}},"id":1592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9307:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"nodeType":"VariableDeclarationStatement","src":"9281:50:16"},{"assignments":[1595],"declarations":[{"constant":false,"id":1595,"mutability":"mutable","name":"payer","nameLocation":"9365:5:16","nodeType":"VariableDeclaration","scope":1614,"src":"9357:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1594,"name":"address","nodeType":"ElementaryTypeName","src":"9357:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1603,"initialValue":{"condition":{"id":1596,"name":"payerIsUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"9373:11:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":1600,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9406:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}],"id":1599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9398:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1598,"name":"address","nodeType":"ElementaryTypeName","src":"9398:7:16","typeDescriptions":{}}},"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9398:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9373:38:16","trueExpression":{"id":1597,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"9387:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9357:54:16"},{"expression":{"arguments":[{"arguments":[{"id":1606,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1572,"src":"9464:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1605,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"9460:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9460:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1608,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1575,"src":"9476:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1609,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"9487:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1610,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"9500:4:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":1611,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"9506:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1604,"name":"classicSwapExactOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5133,"src":"9437:22:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$returns$__$","typeString":"function (address,uint256,uint256,address[] calldata,address)"}},"id":1612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9437:75:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1613,"nodeType":"ExpressionStatement","src":"9437:75:16"}]}},"id":1758,"nodeType":"IfStatement","src":"7441:4885:16","trueBody":{"id":1566,"nodeType":"Block","src":"7488:996:16","statements":[{"assignments":[1524],"declarations":[{"constant":false,"id":1524,"mutability":"mutable","name":"recipient","nameLocation":"7622:9:16","nodeType":"VariableDeclaration","scope":1566,"src":"7614:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1523,"name":"address","nodeType":"ElementaryTypeName","src":"7614:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1525,"nodeType":"VariableDeclarationStatement","src":"7614:17:16"},{"assignments":[1527],"declarations":[{"constant":false,"id":1527,"mutability":"mutable","name":"amountIn","nameLocation":"7665:8:16","nodeType":"VariableDeclaration","scope":1566,"src":"7657:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1526,"name":"uint256","nodeType":"ElementaryTypeName","src":"7657:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1528,"nodeType":"VariableDeclarationStatement","src":"7657:16:16"},{"assignments":[1530],"declarations":[{"constant":false,"id":1530,"mutability":"mutable","name":"amountOutMin","nameLocation":"7707:12:16","nodeType":"VariableDeclaration","scope":1566,"src":"7699:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1529,"name":"uint256","nodeType":"ElementaryTypeName","src":"7699:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1531,"nodeType":"VariableDeclarationStatement","src":"7699:20:16"},{"assignments":[1533],"declarations":[{"constant":false,"id":1533,"mutability":"mutable","name":"payerIsUser","nameLocation":"7750:11:16","nodeType":"VariableDeclaration","scope":1566,"src":"7745:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1532,"name":"bool","nodeType":"ElementaryTypeName","src":"7745:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1534,"nodeType":"VariableDeclarationStatement","src":"7745:16:16"},{"AST":{"nodeType":"YulBlock","src":"7796:410:16","statements":[{"nodeType":"YulAssignment","src":"7826:40:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"7852:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7839:12:16"},"nodeType":"YulFunctionCall","src":"7839:27:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"7826:9:16"}]},{"nodeType":"YulAssignment","src":"7895:50:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"7924:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"7939:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7920:3:16"},"nodeType":"YulFunctionCall","src":"7920:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7907:12:16"},"nodeType":"YulFunctionCall","src":"7907:38:16"},"variableNames":[{"name":"amountIn","nodeType":"YulIdentifier","src":"7895:8:16"}]},{"nodeType":"YulAssignment","src":"7974:54:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"8007:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"8022:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:16"},"nodeType":"YulFunctionCall","src":"8003:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7990:12:16"},"nodeType":"YulFunctionCall","src":"7990:38:16"},"variableNames":[{"name":"amountOutMin","nodeType":"YulIdentifier","src":"7974:12:16"}]},{"nodeType":"YulAssignment","src":"8127:53:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"8159:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"8174:4:16","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8155:3:16"},"nodeType":"YulFunctionCall","src":"8155:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8142:12:16"},"nodeType":"YulFunctionCall","src":"8142:38:16"},"variableNames":[{"name":"payerIsUser","nodeType":"YulIdentifier","src":"8127:11:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1527,"isOffset":false,"isSlot":false,"src":"7895:8:16","valueSize":1},{"declaration":1530,"isOffset":false,"isSlot":false,"src":"7974:12:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"7852:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"7924:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"8007:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"8159:13:16","suffix":"offset","valueSize":1},{"declaration":1533,"isOffset":false,"isSlot":false,"src":"8127:11:16","valueSize":1},{"declaration":1524,"isOffset":false,"isSlot":false,"src":"7826:9:16","valueSize":1}],"id":1535,"nodeType":"InlineAssembly","src":"7787:419:16"},{"assignments":[1540],"declarations":[{"constant":false,"id":1540,"mutability":"mutable","name":"path","nameLocation":"8250:4:16","nodeType":"VariableDeclaration","scope":1566,"src":"8231:23:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1538,"name":"address","nodeType":"ElementaryTypeName","src":"8231:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1539,"nodeType":"ArrayTypeName","src":"8231:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":1545,"initialValue":{"arguments":[{"hexValue":"33","id":1543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8279:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"expression":{"id":1541,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"8257:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8264:14:16","memberName":"toAddressArray","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"8257:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_array$_t_address_$dyn_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address[] calldata)"}},"id":1544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"nodeType":"VariableDeclarationStatement","src":"8231:50:16"},{"assignments":[1547],"declarations":[{"constant":false,"id":1547,"mutability":"mutable","name":"payer","nameLocation":"8315:5:16","nodeType":"VariableDeclaration","scope":1566,"src":"8307:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1546,"name":"address","nodeType":"ElementaryTypeName","src":"8307:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1555,"initialValue":{"condition":{"id":1548,"name":"payerIsUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"8323:11:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":1552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8356:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}],"id":1551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8348:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1550,"name":"address","nodeType":"ElementaryTypeName","src":"8348:7:16","typeDescriptions":{}}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8348:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8323:38:16","trueExpression":{"id":1549,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"8337:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8307:54:16"},{"expression":{"arguments":[{"arguments":[{"id":1558,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"8413:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1557,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"8409:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8409:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1560,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"8425:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1561,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"8435:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1562,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"8449:4:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":1563,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"8455:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1556,"name":"classicSwapExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5083,"src":"8387:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$returns$__$","typeString":"function (address,uint256,uint256,address[] calldata,address)"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:74:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1565,"nodeType":"ExpressionStatement","src":"8387:74:16"}]}}]},"id":1760,"nodeType":"IfStatement","src":"2168:10176:16","trueBody":{"id":1518,"nodeType":"Block","src":"2210:5203:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1282,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"2236:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1283,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"2247:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2256:16:16","memberName":"CL_SWAP_EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":2903,"src":"2247:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2236:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1327,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"3264:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1328,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"3275:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3284:17:16","memberName":"CL_SWAP_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":2906,"src":"3275:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3264:37:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1372,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"4294:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1373,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"4305:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4314:21:16","memberName":"PERMIT2_TRANSFER_FROM","nodeType":"MemberAccess","referencedDeclaration":2909,"src":"4305:30:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4294:41:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1396,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"4948:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1397,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"4959:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4968:20:16","memberName":"PERMIT2_PERMIT_BATCH","nodeType":"MemberAccess","referencedDeclaration":2912,"src":"4959:29:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4948:40:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1431,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"5325:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1432,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"5336:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5345:5:16","memberName":"SWEEP","nodeType":"MemberAccess","referencedDeclaration":2915,"src":"5336:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5325:25:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1456,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"5958:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1457,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"5969:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5978:8:16","memberName":"TRANSFER","nodeType":"MemberAccess","referencedDeclaration":2918,"src":"5969:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5958:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1481,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"6580:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1482,"name":"Commands","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"6591:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Commands_$3006_$","typeString":"type(library Commands)"}},"id":1483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6600:11:16","memberName":"PAY_PORTION","nodeType":"MemberAccess","referencedDeclaration":2921,"src":"6591:20:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6580:31:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1510,"nodeType":"Block","src":"7205:144:16","statements":[{"errorCall":{"arguments":[{"id":1507,"name":"command","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1257,"src":"7318:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1506,"name":"InvalidCommandType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7299:18:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7299:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1509,"nodeType":"RevertStatement","src":"7292:34:16"}]},"id":1511,"nodeType":"IfStatement","src":"6576:773:16","trueBody":{"id":1505,"nodeType":"Block","src":"6613:586:16","statements":[{"assignments":[1486],"declarations":[{"constant":false,"id":1486,"mutability":"mutable","name":"token","nameLocation":"6735:5:16","nodeType":"VariableDeclaration","scope":1505,"src":"6727:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1485,"name":"address","nodeType":"ElementaryTypeName","src":"6727:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1487,"nodeType":"VariableDeclarationStatement","src":"6727:13:16"},{"assignments":[1489],"declarations":[{"constant":false,"id":1489,"mutability":"mutable","name":"recipient","nameLocation":"6774:9:16","nodeType":"VariableDeclaration","scope":1505,"src":"6766:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1488,"name":"address","nodeType":"ElementaryTypeName","src":"6766:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1490,"nodeType":"VariableDeclarationStatement","src":"6766:17:16"},{"assignments":[1492],"declarations":[{"constant":false,"id":1492,"mutability":"mutable","name":"bips","nameLocation":"6817:4:16","nodeType":"VariableDeclaration","scope":1505,"src":"6809:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1491,"name":"uint256","nodeType":"ElementaryTypeName","src":"6809:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1493,"nodeType":"VariableDeclarationStatement","src":"6809:12:16"},{"AST":{"nodeType":"YulBlock","src":"6856:247:16","statements":[{"nodeType":"YulAssignment","src":"6886:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"6908:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6895:12:16"},"nodeType":"YulFunctionCall","src":"6895:27:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"6886:5:16"}]},{"nodeType":"YulAssignment","src":"6951:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"6981:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"6996:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6977:3:16"},"nodeType":"YulFunctionCall","src":"6977:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6964:12:16"},"nodeType":"YulFunctionCall","src":"6964:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"6951:9:16"}]},{"nodeType":"YulAssignment","src":"7031:46:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"7056:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"7071:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:16"},"nodeType":"YulFunctionCall","src":"7052:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7039:12:16"},"nodeType":"YulFunctionCall","src":"7039:38:16"},"variableNames":[{"name":"bips","nodeType":"YulIdentifier","src":"7031:4:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1492,"isOffset":false,"isSlot":false,"src":"7031:4:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"6908:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"6981:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"7056:13:16","suffix":"offset","valueSize":1},{"declaration":1489,"isOffset":false,"isSlot":false,"src":"6951:9:16","valueSize":1},{"declaration":1486,"isOffset":false,"isSlot":false,"src":"6886:5:16","valueSize":1}],"id":1494,"nodeType":"InlineAssembly","src":"6847:256:16"},{"expression":{"arguments":[{"id":1498,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1486,"src":"7148:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1500,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1489,"src":"7159:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1499,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"7155:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7155:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1502,"name":"bips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"7171:4:16","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":1495,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"7128:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":1497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7137:10:16","memberName":"payPortion","nodeType":"MemberAccess","referencedDeclaration":3279,"src":"7128:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7128:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1504,"nodeType":"ExpressionStatement","src":"7128:48:16"}]}},"id":1512,"nodeType":"IfStatement","src":"5954:1395:16","trueBody":{"id":1480,"nodeType":"Block","src":"5988:582:16","statements":[{"assignments":[1461],"declarations":[{"constant":false,"id":1461,"mutability":"mutable","name":"token","nameLocation":"6110:5:16","nodeType":"VariableDeclaration","scope":1480,"src":"6102:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1460,"name":"address","nodeType":"ElementaryTypeName","src":"6102:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1462,"nodeType":"VariableDeclarationStatement","src":"6102:13:16"},{"assignments":[1464],"declarations":[{"constant":false,"id":1464,"mutability":"mutable","name":"recipient","nameLocation":"6149:9:16","nodeType":"VariableDeclaration","scope":1480,"src":"6141:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1463,"name":"address","nodeType":"ElementaryTypeName","src":"6141:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1465,"nodeType":"VariableDeclarationStatement","src":"6141:17:16"},{"assignments":[1467],"declarations":[{"constant":false,"id":1467,"mutability":"mutable","name":"value","nameLocation":"6192:5:16","nodeType":"VariableDeclaration","scope":1480,"src":"6184:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1466,"name":"uint256","nodeType":"ElementaryTypeName","src":"6184:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1468,"nodeType":"VariableDeclarationStatement","src":"6184:13:16"},{"AST":{"nodeType":"YulBlock","src":"6232:248:16","statements":[{"nodeType":"YulAssignment","src":"6262:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"6284:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6271:12:16"},"nodeType":"YulFunctionCall","src":"6271:27:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"6262:5:16"}]},{"nodeType":"YulAssignment","src":"6327:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"6357:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"6372:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6353:3:16"},"nodeType":"YulFunctionCall","src":"6353:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6340:12:16"},"nodeType":"YulFunctionCall","src":"6340:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"6327:9:16"}]},{"nodeType":"YulAssignment","src":"6407:47:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"6433:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"6448:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6429:3:16"},"nodeType":"YulFunctionCall","src":"6429:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6416:12:16"},"nodeType":"YulFunctionCall","src":"6416:38:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6407:5:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1249,"isOffset":true,"isSlot":false,"src":"6284:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"6357:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"6433:13:16","suffix":"offset","valueSize":1},{"declaration":1464,"isOffset":false,"isSlot":false,"src":"6327:9:16","valueSize":1},{"declaration":1461,"isOffset":false,"isSlot":false,"src":"6262:5:16","valueSize":1},{"declaration":1467,"isOffset":false,"isSlot":false,"src":"6407:5:16","valueSize":1}],"id":1469,"nodeType":"InlineAssembly","src":"6223:257:16"},{"expression":{"arguments":[{"id":1473,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"6518:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1475,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"6529:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1474,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"6525:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6525:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1477,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"6541:5:16","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":1470,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"6505:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":1472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6514:3:16","memberName":"pay","nodeType":"MemberAccess","referencedDeclaration":3152,"src":"6505:12:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6505:42:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1479,"nodeType":"ExpressionStatement","src":"6505:42:16"}]}},"id":1513,"nodeType":"IfStatement","src":"5321:2028:16","trueBody":{"id":1455,"nodeType":"Block","src":"5352:596:16","statements":[{"assignments":[1436],"declarations":[{"constant":false,"id":1436,"mutability":"mutable","name":"token","nameLocation":"5474:5:16","nodeType":"VariableDeclaration","scope":1455,"src":"5466:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1435,"name":"address","nodeType":"ElementaryTypeName","src":"5466:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1437,"nodeType":"VariableDeclarationStatement","src":"5466:13:16"},{"assignments":[1439],"declarations":[{"constant":false,"id":1439,"mutability":"mutable","name":"recipient","nameLocation":"5513:9:16","nodeType":"VariableDeclaration","scope":1455,"src":"5505:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1438,"name":"address","nodeType":"ElementaryTypeName","src":"5505:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1440,"nodeType":"VariableDeclarationStatement","src":"5505:17:16"},{"assignments":[1442],"declarations":[{"constant":false,"id":1442,"mutability":"mutable","name":"amountMin","nameLocation":"5556:9:16","nodeType":"VariableDeclaration","scope":1455,"src":"5548:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1441,"name":"uint160","nodeType":"ElementaryTypeName","src":"5548:7:16","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":1443,"nodeType":"VariableDeclarationStatement","src":"5548:17:16"},{"AST":{"nodeType":"YulBlock","src":"5600:252:16","statements":[{"nodeType":"YulAssignment","src":"5630:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"5652:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5639:12:16"},"nodeType":"YulFunctionCall","src":"5639:27:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"5630:5:16"}]},{"nodeType":"YulAssignment","src":"5695:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"5725:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"5740:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5721:3:16"},"nodeType":"YulFunctionCall","src":"5721:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5708:12:16"},"nodeType":"YulFunctionCall","src":"5708:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"5695:9:16"}]},{"nodeType":"YulAssignment","src":"5775:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"5805:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"5820:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5801:3:16"},"nodeType":"YulFunctionCall","src":"5801:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5788:12:16"},"nodeType":"YulFunctionCall","src":"5788:38:16"},"variableNames":[{"name":"amountMin","nodeType":"YulIdentifier","src":"5775:9:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1442,"isOffset":false,"isSlot":false,"src":"5775:9:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"5652:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"5725:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"5805:13:16","suffix":"offset","valueSize":1},{"declaration":1439,"isOffset":false,"isSlot":false,"src":"5695:9:16","valueSize":1},{"declaration":1436,"isOffset":false,"isSlot":false,"src":"5630:5:16","valueSize":1}],"id":1444,"nodeType":"InlineAssembly","src":"5591:261:16"},{"expression":{"arguments":[{"id":1448,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1436,"src":"5892:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1450,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1439,"src":"5903:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1449,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"5899:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5899:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1452,"name":"amountMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"5915:9:16","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":1445,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"5877:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payments_$3544_$","typeString":"type(contract Payments)"}},"id":1447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5886:5:16","memberName":"sweep","nodeType":"MemberAccess","referencedDeclaration":3356,"src":"5877:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5877:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1454,"nodeType":"ExpressionStatement","src":"5877:48:16"}]}},"id":1514,"nodeType":"IfStatement","src":"4944:2405:16","trueBody":{"id":1430,"nodeType":"Block","src":"4990:325:16","statements":[{"assignments":[1404,null],"declarations":[{"constant":false,"id":1404,"mutability":"mutable","name":"permitBatch","nameLocation":"5055:11:16","nodeType":"VariableDeclaration","scope":1430,"src":"5017:49:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":1403,"nodeType":"UserDefinedTypeName","pathNode":{"id":1402,"name":"IAllowanceTransfer.PermitBatch","nameLocations":["5017:18:16","5036:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"5017:30:16"},"referencedDeclaration":6490,"src":"5017:30:16","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"},null],"id":1414,"initialValue":{"arguments":[{"id":1407,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"5110:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"expression":{"id":1408,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"5119:18:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAllowanceTransfer_$6600_$","typeString":"type(contract IAllowanceTransfer)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5138:11:16","memberName":"PermitBatch","nodeType":"MemberAccess","referencedDeclaration":6490,"src":"5119:30:16","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PermitBatch_$6490_storage_ptr_$","typeString":"type(struct IAllowanceTransfer.PermitBatch storage pointer)"}},{"id":1411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5151:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1410,"name":"bytes","nodeType":"ElementaryTypeName","src":"5151:5:16","typeDescriptions":{}}}],"id":1412,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5118:39:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_struct$_PermitBatch_$6490_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(struct IAllowanceTransfer.PermitBatch storage pointer),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_struct$_PermitBatch_$6490_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(struct IAllowanceTransfer.PermitBatch storage pointer),type(bytes storage pointer))"}],"expression":{"id":1405,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5099:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5103:6:16","memberName":"decode","nodeType":"MemberAccess","src":"5099:10:16","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5099:59:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_PermitBatch_$6490_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(struct IAllowanceTransfer.PermitBatch memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5016:142:16"},{"assignments":[1416],"declarations":[{"constant":false,"id":1416,"mutability":"mutable","name":"data","nameLocation":"5199:4:16","nodeType":"VariableDeclaration","scope":1430,"src":"5184:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1415,"name":"bytes","nodeType":"ElementaryTypeName","src":"5184:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1421,"initialValue":{"arguments":[{"hexValue":"31","id":1419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5221:1:16","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":1417,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"5206:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5213:7:16","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"5206:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5206:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"5184:39:16"},{"expression":{"arguments":[{"id":1425,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"5264:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1426,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"5274:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},{"id":1427,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1416,"src":"5287:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1422,"name":"PERMIT2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"5249:7:16","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5257:6:16","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":6561,"src":"5249:14:16","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_struct$_PermitBatch_$6490_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,struct IAllowanceTransfer.PermitBatch memory,bytes memory) external"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5249:43:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"5249:43:16"}]}},"id":1515,"nodeType":"IfStatement","src":"4290:3059:16","trueBody":{"id":1395,"nodeType":"Block","src":"4337:601:16","statements":[{"assignments":[1377],"declarations":[{"constant":false,"id":1377,"mutability":"mutable","name":"token","nameLocation":"4458:5:16","nodeType":"VariableDeclaration","scope":1395,"src":"4450:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1376,"name":"address","nodeType":"ElementaryTypeName","src":"4450:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1378,"nodeType":"VariableDeclarationStatement","src":"4450:13:16"},{"assignments":[1380],"declarations":[{"constant":false,"id":1380,"mutability":"mutable","name":"recipient","nameLocation":"4497:9:16","nodeType":"VariableDeclaration","scope":1395,"src":"4489:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1379,"name":"address","nodeType":"ElementaryTypeName","src":"4489:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1381,"nodeType":"VariableDeclarationStatement","src":"4489:17:16"},{"assignments":[1383],"declarations":[{"constant":false,"id":1383,"mutability":"mutable","name":"amount","nameLocation":"4540:6:16","nodeType":"VariableDeclaration","scope":1395,"src":"4532:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1382,"name":"uint160","nodeType":"ElementaryTypeName","src":"4532:7:16","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":1384,"nodeType":"VariableDeclarationStatement","src":"4532:14:16"},{"AST":{"nodeType":"YulBlock","src":"4581:249:16","statements":[{"nodeType":"YulAssignment","src":"4611:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"4633:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4620:12:16"},"nodeType":"YulFunctionCall","src":"4620:27:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"4611:5:16"}]},{"nodeType":"YulAssignment","src":"4676:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"4706:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"4721:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4702:3:16"},"nodeType":"YulFunctionCall","src":"4702:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4689:12:16"},"nodeType":"YulFunctionCall","src":"4689:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"4676:9:16"}]},{"nodeType":"YulAssignment","src":"4756:48:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"4783:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"4798:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4779:3:16"},"nodeType":"YulFunctionCall","src":"4779:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4766:12:16"},"nodeType":"YulFunctionCall","src":"4766:38:16"},"variableNames":[{"name":"amount","nodeType":"YulIdentifier","src":"4756:6:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1383,"isOffset":false,"isSlot":false,"src":"4756:6:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"4633:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"4706:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"4783:13:16","suffix":"offset","valueSize":1},{"declaration":1380,"isOffset":false,"isSlot":false,"src":"4676:9:16","valueSize":1},{"declaration":1377,"isOffset":false,"isSlot":false,"src":"4611:5:16","valueSize":1}],"id":1385,"nodeType":"InlineAssembly","src":"4572:258:16"},{"expression":{"arguments":[{"id":1387,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1377,"src":"4875:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1388,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"4882:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1390,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"4896:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1389,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"4892:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4892:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1392,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"4908:6:16","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1386,"name":"permit2TransferFrom","nodeType":"Identifier","overloadedDeclarations":[3586,3630],"referencedDeclaration":3586,"src":"4855:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint160_$returns$__$","typeString":"function (address,address,address,uint160)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4855:60:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1394,"nodeType":"ExpressionStatement","src":"4855:60:16"}]}},"id":1516,"nodeType":"IfStatement","src":"3260:4089:16","trueBody":{"id":1371,"nodeType":"Block","src":"3303:981:16","statements":[{"assignments":[1332],"declarations":[{"constant":false,"id":1332,"mutability":"mutable","name":"recipient","nameLocation":"3437:9:16","nodeType":"VariableDeclaration","scope":1371,"src":"3429:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1331,"name":"address","nodeType":"ElementaryTypeName","src":"3429:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1333,"nodeType":"VariableDeclarationStatement","src":"3429:17:16"},{"assignments":[1335],"declarations":[{"constant":false,"id":1335,"mutability":"mutable","name":"amountOut","nameLocation":"3480:9:16","nodeType":"VariableDeclaration","scope":1371,"src":"3472:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1336,"nodeType":"VariableDeclarationStatement","src":"3472:17:16"},{"assignments":[1338],"declarations":[{"constant":false,"id":1338,"mutability":"mutable","name":"amountInMax","nameLocation":"3523:11:16","nodeType":"VariableDeclaration","scope":1371,"src":"3515:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1337,"name":"uint256","nodeType":"ElementaryTypeName","src":"3515:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1339,"nodeType":"VariableDeclarationStatement","src":"3515:19:16"},{"assignments":[1341],"declarations":[{"constant":false,"id":1341,"mutability":"mutable","name":"payerIsUser","nameLocation":"3565:11:16","nodeType":"VariableDeclaration","scope":1371,"src":"3560:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1340,"name":"bool","nodeType":"ElementaryTypeName","src":"3560:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1342,"nodeType":"VariableDeclarationStatement","src":"3560:16:16"},{"AST":{"nodeType":"YulBlock","src":"3611:410:16","statements":[{"nodeType":"YulAssignment","src":"3641:40:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"3667:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3654:12:16"},"nodeType":"YulFunctionCall","src":"3654:27:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"3641:9:16"}]},{"nodeType":"YulAssignment","src":"3710:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"3740:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"3755:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3736:3:16"},"nodeType":"YulFunctionCall","src":"3736:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3723:12:16"},"nodeType":"YulFunctionCall","src":"3723:38:16"},"variableNames":[{"name":"amountOut","nodeType":"YulIdentifier","src":"3710:9:16"}]},{"nodeType":"YulAssignment","src":"3790:53:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"3822:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"3837:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3818:3:16"},"nodeType":"YulFunctionCall","src":"3818:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3805:12:16"},"nodeType":"YulFunctionCall","src":"3805:38:16"},"variableNames":[{"name":"amountInMax","nodeType":"YulIdentifier","src":"3790:11:16"}]},{"nodeType":"YulAssignment","src":"3942:53:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"3974:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"3989:4:16","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3970:3:16"},"nodeType":"YulFunctionCall","src":"3970:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3957:12:16"},"nodeType":"YulFunctionCall","src":"3957:38:16"},"variableNames":[{"name":"payerIsUser","nodeType":"YulIdentifier","src":"3942:11:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1338,"isOffset":false,"isSlot":false,"src":"3790:11:16","valueSize":1},{"declaration":1335,"isOffset":false,"isSlot":false,"src":"3710:9:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"3667:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"3740:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"3822:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"3974:13:16","suffix":"offset","valueSize":1},{"declaration":1341,"isOffset":false,"isSlot":false,"src":"3942:11:16","valueSize":1},{"declaration":1332,"isOffset":false,"isSlot":false,"src":"3641:9:16","valueSize":1}],"id":1343,"nodeType":"InlineAssembly","src":"3602:419:16"},{"assignments":[1345],"declarations":[{"constant":false,"id":1345,"mutability":"mutable","name":"path","nameLocation":"4061:4:16","nodeType":"VariableDeclaration","scope":1371,"src":"4046:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1344,"name":"bytes","nodeType":"ElementaryTypeName","src":"4046:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1350,"initialValue":{"arguments":[{"hexValue":"33","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4083:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"expression":{"id":1346,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"4068:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4075:7:16","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"4068:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4068:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"4046:39:16"},{"assignments":[1352],"declarations":[{"constant":false,"id":1352,"mutability":"mutable","name":"payer","nameLocation":"4119:5:16","nodeType":"VariableDeclaration","scope":1371,"src":"4111:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1351,"name":"address","nodeType":"ElementaryTypeName","src":"4111:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1360,"initialValue":{"condition":{"id":1353,"name":"payerIsUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1341,"src":"4127:11:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":1357,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4160:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}],"id":1356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4152:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1355,"name":"address","nodeType":"ElementaryTypeName","src":"4152:7:16","typeDescriptions":{}}},"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4152:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4127:38:16","trueExpression":{"id":1354,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"4141:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4111:54:16"},{"expression":{"arguments":[{"arguments":[{"id":1363,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"4213:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1362,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"4209:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4209:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1365,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"4225:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1366,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"4236:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1367,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"4249:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1368,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"4255:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1361,"name":"clSwapExactOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4276,"src":"4191:17:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$_t_address_$returns$__$","typeString":"function (address,uint256,uint256,bytes calldata,address)"}},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:70:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1370,"nodeType":"ExpressionStatement","src":"4191:70:16"}]}},"id":1517,"nodeType":"IfStatement","src":"2232:5117:16","trueBody":{"id":1326,"nodeType":"Block","src":"2274:980:16","statements":[{"assignments":[1287],"declarations":[{"constant":false,"id":1287,"mutability":"mutable","name":"recipient","nameLocation":"2408:9:16","nodeType":"VariableDeclaration","scope":1326,"src":"2400:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1286,"name":"address","nodeType":"ElementaryTypeName","src":"2400:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1288,"nodeType":"VariableDeclarationStatement","src":"2400:17:16"},{"assignments":[1290],"declarations":[{"constant":false,"id":1290,"mutability":"mutable","name":"amountIn","nameLocation":"2451:8:16","nodeType":"VariableDeclaration","scope":1326,"src":"2443:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1289,"name":"uint256","nodeType":"ElementaryTypeName","src":"2443:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1291,"nodeType":"VariableDeclarationStatement","src":"2443:16:16"},{"assignments":[1293],"declarations":[{"constant":false,"id":1293,"mutability":"mutable","name":"amountOutMin","nameLocation":"2493:12:16","nodeType":"VariableDeclaration","scope":1326,"src":"2485:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1292,"name":"uint256","nodeType":"ElementaryTypeName","src":"2485:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1294,"nodeType":"VariableDeclarationStatement","src":"2485:20:16"},{"assignments":[1296],"declarations":[{"constant":false,"id":1296,"mutability":"mutable","name":"payerIsUser","nameLocation":"2536:11:16","nodeType":"VariableDeclaration","scope":1326,"src":"2531:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1295,"name":"bool","nodeType":"ElementaryTypeName","src":"2531:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1297,"nodeType":"VariableDeclarationStatement","src":"2531:16:16"},{"AST":{"nodeType":"YulBlock","src":"2582:410:16","statements":[{"nodeType":"YulAssignment","src":"2612:40:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"2638:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2625:12:16"},"nodeType":"YulFunctionCall","src":"2625:27:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"2612:9:16"}]},{"nodeType":"YulAssignment","src":"2681:50:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"2710:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"2725:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2706:3:16"},"nodeType":"YulFunctionCall","src":"2706:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2693:12:16"},"nodeType":"YulFunctionCall","src":"2693:38:16"},"variableNames":[{"name":"amountIn","nodeType":"YulIdentifier","src":"2681:8:16"}]},{"nodeType":"YulAssignment","src":"2760:54:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"2793:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"2808:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:16"},"nodeType":"YulFunctionCall","src":"2789:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2776:12:16"},"nodeType":"YulFunctionCall","src":"2776:38:16"},"variableNames":[{"name":"amountOutMin","nodeType":"YulIdentifier","src":"2760:12:16"}]},{"nodeType":"YulAssignment","src":"2913:53:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"2945:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"2960:4:16","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2941:3:16"},"nodeType":"YulFunctionCall","src":"2941:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2928:12:16"},"nodeType":"YulFunctionCall","src":"2928:38:16"},"variableNames":[{"name":"payerIsUser","nodeType":"YulIdentifier","src":"2913:11:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1290,"isOffset":false,"isSlot":false,"src":"2681:8:16","valueSize":1},{"declaration":1293,"isOffset":false,"isSlot":false,"src":"2760:12:16","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"2638:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"2710:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"2793:13:16","suffix":"offset","valueSize":1},{"declaration":1249,"isOffset":true,"isSlot":false,"src":"2945:13:16","suffix":"offset","valueSize":1},{"declaration":1296,"isOffset":false,"isSlot":false,"src":"2913:11:16","valueSize":1},{"declaration":1287,"isOffset":false,"isSlot":false,"src":"2612:9:16","valueSize":1}],"id":1298,"nodeType":"InlineAssembly","src":"2573:419:16"},{"assignments":[1300],"declarations":[{"constant":false,"id":1300,"mutability":"mutable","name":"path","nameLocation":"3032:4:16","nodeType":"VariableDeclaration","scope":1326,"src":"3017:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1299,"name":"bytes","nodeType":"ElementaryTypeName","src":"3017:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1305,"initialValue":{"arguments":[{"hexValue":"33","id":1303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3054:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"expression":{"id":1301,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"3039:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3046:7:16","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"3039:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3039:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"3017:39:16"},{"assignments":[1307],"declarations":[{"constant":false,"id":1307,"mutability":"mutable","name":"payer","nameLocation":"3090:5:16","nodeType":"VariableDeclaration","scope":1326,"src":"3082:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1306,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1315,"initialValue":{"condition":{"id":1308,"name":"payerIsUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1296,"src":"3098:11:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":1312,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3131:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}],"id":1311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3123:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1310,"name":"address","nodeType":"ElementaryTypeName","src":"3123:7:16","typeDescriptions":{}}},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3123:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3098:38:16","trueExpression":{"id":1309,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"3112:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3082:54:16"},{"expression":{"arguments":[{"arguments":[{"id":1318,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"3183:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1317,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"3179:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3179:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1320,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1290,"src":"3195:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1321,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"3205:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1322,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"3219:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1323,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"3225:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1316,"name":"clSwapExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"3162:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$_t_address_$returns$__$","typeString":"function (address,uint256,uint256,bytes calldata,address)"}},"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3162:69:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1325,"nodeType":"ExpressionStatement","src":"3162:69:16"}]}}]}}]}}]}}]},"documentation":{"id":1245,"nodeType":"StructuredDocumentation","src":"1333:445:16","text":"@notice Decodes and executes the given command with the given inputs\n @param commandType The command type to execute\n @param inputs The inputs to execute the command with\n @dev 2 masks are used to enable use of a nested-if statement in execution for efficiency reasons\n @return success True on success of the command, false on failure\n @return output The outputs or error messages, if any, from the command"},"id":2266,"implemented":true,"kind":"function","modifiers":[],"name":"dispatch","nameLocation":"1792:8:16","nodeType":"FunctionDefinition","parameters":{"id":1250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1247,"mutability":"mutable","name":"commandType","nameLocation":"1808:11:16","nodeType":"VariableDeclaration","scope":2266,"src":"1801:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1246,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1801:6:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":1249,"mutability":"mutable","name":"inputs","nameLocation":"1836:6:16","nodeType":"VariableDeclaration","scope":2266,"src":"1821:21:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1248,"name":"bytes","nodeType":"ElementaryTypeName","src":"1821:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1800:43:16"},"returnParameters":{"id":1255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"success","nameLocation":"1867:7:16","nodeType":"VariableDeclaration","scope":2266,"src":"1862:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1251,"name":"bool","nodeType":"ElementaryTypeName","src":"1862:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1254,"mutability":"mutable","name":"output","nameLocation":"1889:6:16","nodeType":"VariableDeclaration","scope":2266,"src":"1876:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1253,"name":"bytes","nodeType":"ElementaryTypeName","src":"1876:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1861:35:16"},"scope":2419,"src":"1783:20164:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"documentation":{"id":2267,"nodeType":"StructuredDocumentation","src":"21953:237:16","text":"@notice Executes encoded commands along with provided inputs.\n @param commands A set of concatenated commands, each 1 byte in length\n @param inputs An array of byte strings containing abi encoded inputs for each command"},"functionSelector":"24856bc3","id":2275,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"22204:7:16","nodeType":"FunctionDefinition","parameters":{"id":2273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2269,"mutability":"mutable","name":"commands","nameLocation":"22227:8:16","nodeType":"VariableDeclaration","scope":2275,"src":"22212:23:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2268,"name":"bytes","nodeType":"ElementaryTypeName","src":"22212:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2272,"mutability":"mutable","name":"inputs","nameLocation":"22254:6:16","nodeType":"VariableDeclaration","scope":2275,"src":"22237:23:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2270,"name":"bytes","nodeType":"ElementaryTypeName","src":"22237:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2271,"nodeType":"ArrayTypeName","src":"22237:7:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"22211:50:16"},"returnParameters":{"id":2274,"nodeType":"ParameterList","parameters":[],"src":"22286:0:16"},"scope":2419,"src":"22195:92:16","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":2332,"nodeType":"Block","src":"22833:660:16","statements":[{"assignments":[2288,2290],"declarations":[{"constant":false,"id":2288,"mutability":"mutable","name":"value","nameLocation":"22939:5:16","nodeType":"VariableDeclaration","scope":2332,"src":"22931:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2287,"name":"uint256","nodeType":"ElementaryTypeName","src":"22931:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2290,"mutability":"mutable","name":"data","nameLocation":"22961:4:16","nodeType":"VariableDeclaration","scope":2332,"src":"22946:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2289,"name":"bytes","nodeType":"ElementaryTypeName","src":"22946:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2294,"initialValue":{"arguments":[{"id":2292,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"22985:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2291,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"22969:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22969:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"22930:62:16"},{"assignments":[2296],"declarations":[{"constant":false,"id":2296,"mutability":"mutable","name":"recipient","nameLocation":"23010:9:16","nodeType":"VariableDeclaration","scope":2332,"src":"23002:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2295,"name":"address","nodeType":"ElementaryTypeName","src":"23002:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2297,"nodeType":"VariableDeclarationStatement","src":"23002:17:16"},{"assignments":[2299],"declarations":[{"constant":false,"id":2299,"mutability":"mutable","name":"token","nameLocation":"23037:5:16","nodeType":"VariableDeclaration","scope":2332,"src":"23029:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2298,"name":"address","nodeType":"ElementaryTypeName","src":"23029:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2300,"nodeType":"VariableDeclarationStatement","src":"23029:13:16"},{"assignments":[2302],"declarations":[{"constant":false,"id":2302,"mutability":"mutable","name":"id","nameLocation":"23060:2:16","nodeType":"VariableDeclaration","scope":2332,"src":"23052:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2301,"name":"uint256","nodeType":"ElementaryTypeName","src":"23052:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2303,"nodeType":"VariableDeclarationStatement","src":"23052:10:16"},{"AST":{"nodeType":"YulBlock","src":"23081:255:16","statements":[{"nodeType":"YulAssignment","src":"23158:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"23188:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"23203:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23184:3:16"},"nodeType":"YulFunctionCall","src":"23184:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23171:12:16"},"nodeType":"YulFunctionCall","src":"23171:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"23158:9:16"}]},{"nodeType":"YulAssignment","src":"23222:47:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"23248:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"23263:4:16","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23244:3:16"},"nodeType":"YulFunctionCall","src":"23244:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23231:12:16"},"nodeType":"YulFunctionCall","src":"23231:38:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"23222:5:16"}]},{"nodeType":"YulAssignment","src":"23282:44:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"23305:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"23320:4:16","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23301:3:16"},"nodeType":"YulFunctionCall","src":"23301:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23288:12:16"},"nodeType":"YulFunctionCall","src":"23288:38:16"},"variableNames":[{"name":"id","nodeType":"YulIdentifier","src":"23282:2:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2302,"isOffset":false,"isSlot":false,"src":"23282:2:16","valueSize":1},{"declaration":2278,"isOffset":true,"isSlot":false,"src":"23188:13:16","suffix":"offset","valueSize":1},{"declaration":2278,"isOffset":true,"isSlot":false,"src":"23248:13:16","suffix":"offset","valueSize":1},{"declaration":2278,"isOffset":true,"isSlot":false,"src":"23305:13:16","suffix":"offset","valueSize":1},{"declaration":2296,"isOffset":false,"isSlot":false,"src":"23158:9:16","valueSize":1},{"declaration":2299,"isOffset":false,"isSlot":false,"src":"23222:5:16","valueSize":1}],"id":2304,"nodeType":"InlineAssembly","src":"23072:264:16"},{"expression":{"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2305,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"23346:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2306,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"23355:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2307,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"23345:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2312,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"23393:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2308,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"23365:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23374:4:16","memberName":"call","nodeType":"MemberAccess","src":"23365:13:16","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":2311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2310,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2288,"src":"23386:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"23365:27:16","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":2313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23365:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"23345:53:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2315,"nodeType":"ExpressionStatement","src":"23345:53:16"},{"condition":{"id":2316,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"23412:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2331,"nodeType":"IfStatement","src":"23408:78:16","trueBody":{"expression":{"arguments":[{"arguments":[{"id":2323,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23460:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}],"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23452:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2321,"name":"address","nodeType":"ElementaryTypeName","src":"23452:7:16","typeDescriptions":{}}},"id":2324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23452:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2326,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"23471:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2325,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"23467:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23467:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2328,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"23483:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2318,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"23428:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2317,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"23421:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$9075_$","typeString":"type(contract ERC721)"}},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23421:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$9075","typeString":"contract ERC721"}},"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23435:16:16","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8832,"src":"23421:30:16","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23421:65:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"ExpressionStatement","src":"23421:65:16"}}]},"documentation":{"id":2276,"nodeType":"StructuredDocumentation","src":"22293:393:16","text":"@notice Performs a call to purchase an ERC721, then transfers the ERC721 to a specified recipient\n @param inputs The inputs for the protocol and ERC721 transfer, encoded\n @param protocol The protocol to pass the calldata to\n @return success True on success of the command, false on failure\n @return output The outputs or error messages, if any, from the command"},"id":2333,"implemented":true,"kind":"function","modifiers":[],"name":"callAndTransfer721","nameLocation":"22700:18:16","nodeType":"FunctionDefinition","parameters":{"id":2281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2278,"mutability":"mutable","name":"inputs","nameLocation":"22734:6:16","nodeType":"VariableDeclaration","scope":2333,"src":"22719:21:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2277,"name":"bytes","nodeType":"ElementaryTypeName","src":"22719:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2280,"mutability":"mutable","name":"protocol","nameLocation":"22750:8:16","nodeType":"VariableDeclaration","scope":2333,"src":"22742:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2279,"name":"address","nodeType":"ElementaryTypeName","src":"22742:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22718:41:16"},"returnParameters":{"id":2286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2283,"mutability":"mutable","name":"success","nameLocation":"22799:7:16","nodeType":"VariableDeclaration","scope":2333,"src":"22794:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2282,"name":"bool","nodeType":"ElementaryTypeName","src":"22794:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2285,"mutability":"mutable","name":"output","nameLocation":"22821:6:16","nodeType":"VariableDeclaration","scope":2333,"src":"22808:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2284,"name":"bytes","nodeType":"ElementaryTypeName","src":"22808:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22793:35:16"},"scope":2419,"src":"22691:802:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2398,"nodeType":"Block","src":"24043:777:16","statements":[{"assignments":[2346,2348],"declarations":[{"constant":false,"id":2346,"mutability":"mutable","name":"value","nameLocation":"24158:5:16","nodeType":"VariableDeclaration","scope":2398,"src":"24150:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2345,"name":"uint256","nodeType":"ElementaryTypeName","src":"24150:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2348,"mutability":"mutable","name":"data","nameLocation":"24180:4:16","nodeType":"VariableDeclaration","scope":2398,"src":"24165:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2347,"name":"bytes","nodeType":"ElementaryTypeName","src":"24165:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2352,"initialValue":{"arguments":[{"id":2350,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2336,"src":"24204:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2349,"name":"getValueAndData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"24188:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint256,bytes calldata)"}},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24188:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"24149:62:16"},{"assignments":[2354],"declarations":[{"constant":false,"id":2354,"mutability":"mutable","name":"recipient","nameLocation":"24229:9:16","nodeType":"VariableDeclaration","scope":2398,"src":"24221:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2353,"name":"address","nodeType":"ElementaryTypeName","src":"24221:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2355,"nodeType":"VariableDeclarationStatement","src":"24221:17:16"},{"assignments":[2357],"declarations":[{"constant":false,"id":2357,"mutability":"mutable","name":"token","nameLocation":"24256:5:16","nodeType":"VariableDeclaration","scope":2398,"src":"24248:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2356,"name":"address","nodeType":"ElementaryTypeName","src":"24248:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2358,"nodeType":"VariableDeclarationStatement","src":"24248:13:16"},{"assignments":[2360],"declarations":[{"constant":false,"id":2360,"mutability":"mutable","name":"id","nameLocation":"24279:2:16","nodeType":"VariableDeclaration","scope":2398,"src":"24271:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2359,"name":"uint256","nodeType":"ElementaryTypeName","src":"24271:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2361,"nodeType":"VariableDeclarationStatement","src":"24271:10:16"},{"assignments":[2363],"declarations":[{"constant":false,"id":2363,"mutability":"mutable","name":"amount","nameLocation":"24299:6:16","nodeType":"VariableDeclaration","scope":2398,"src":"24291:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2362,"name":"uint256","nodeType":"ElementaryTypeName","src":"24291:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2364,"nodeType":"VariableDeclarationStatement","src":"24291:14:16"},{"AST":{"nodeType":"YulBlock","src":"24324:316:16","statements":[{"nodeType":"YulAssignment","src":"24401:51:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"24431:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"24446:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24427:3:16"},"nodeType":"YulFunctionCall","src":"24427:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"24414:12:16"},"nodeType":"YulFunctionCall","src":"24414:38:16"},"variableNames":[{"name":"recipient","nodeType":"YulIdentifier","src":"24401:9:16"}]},{"nodeType":"YulAssignment","src":"24465:47:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"24491:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"24506:4:16","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24487:3:16"},"nodeType":"YulFunctionCall","src":"24487:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"24474:12:16"},"nodeType":"YulFunctionCall","src":"24474:38:16"},"variableNames":[{"name":"token","nodeType":"YulIdentifier","src":"24465:5:16"}]},{"nodeType":"YulAssignment","src":"24525:44:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"24548:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"24563:4:16","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24544:3:16"},"nodeType":"YulFunctionCall","src":"24544:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"24531:12:16"},"nodeType":"YulFunctionCall","src":"24531:38:16"},"variableNames":[{"name":"id","nodeType":"YulIdentifier","src":"24525:2:16"}]},{"nodeType":"YulAssignment","src":"24582:48:16","value":{"arguments":[{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"24609:13:16"},{"kind":"number","nodeType":"YulLiteral","src":"24624:4:16","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24605:3:16"},"nodeType":"YulFunctionCall","src":"24605:24:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"24592:12:16"},"nodeType":"YulFunctionCall","src":"24592:38:16"},"variableNames":[{"name":"amount","nodeType":"YulIdentifier","src":"24582:6:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2363,"isOffset":false,"isSlot":false,"src":"24582:6:16","valueSize":1},{"declaration":2360,"isOffset":false,"isSlot":false,"src":"24525:2:16","valueSize":1},{"declaration":2336,"isOffset":true,"isSlot":false,"src":"24431:13:16","suffix":"offset","valueSize":1},{"declaration":2336,"isOffset":true,"isSlot":false,"src":"24491:13:16","suffix":"offset","valueSize":1},{"declaration":2336,"isOffset":true,"isSlot":false,"src":"24548:13:16","suffix":"offset","valueSize":1},{"declaration":2336,"isOffset":true,"isSlot":false,"src":"24609:13:16","suffix":"offset","valueSize":1},{"declaration":2354,"isOffset":false,"isSlot":false,"src":"24401:9:16","valueSize":1},{"declaration":2357,"isOffset":false,"isSlot":false,"src":"24465:5:16","valueSize":1}],"id":2365,"nodeType":"InlineAssembly","src":"24315:325:16"},{"expression":{"id":2375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2366,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"24650:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2367,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"24659:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2368,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24649:17:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2373,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2348,"src":"24697:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2369,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"24669:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24678:4:16","memberName":"call","nodeType":"MemberAccess","src":"24669:13:16","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":2372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2371,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2346,"src":"24690:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"24669:27:16","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":2374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24669:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"24649:53:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2376,"nodeType":"ExpressionStatement","src":"24649:53:16"},{"condition":{"id":2377,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"24716:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2397,"nodeType":"IfStatement","src":"24712:101:16","trueBody":{"expression":{"arguments":[{"arguments":[{"id":2384,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24765:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Dispatcher_$2419","typeString":"contract Dispatcher"}],"id":2383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24757:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2382,"name":"address","nodeType":"ElementaryTypeName","src":"24757:7:16","typeDescriptions":{}}},"id":2385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24757:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2387,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"24776:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2386,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2496,"src":"24772:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24772:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2389,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24788:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2390,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"24792:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24810:1:16","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":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"24800:9:16","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2391,"name":"bytes","nodeType":"ElementaryTypeName","src":"24804:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24800:12:16","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"}],"expression":{"arguments":[{"id":2379,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2357,"src":"24733:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2378,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"24725:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155_$8099_$","typeString":"type(contract ERC1155)"}},"id":2380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24725:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155_$8099","typeString":"contract ERC1155"}},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24740:16:16","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7635,"src":"24725:31:16","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint256,bytes memory) external"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24725:88:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2396,"nodeType":"ExpressionStatement","src":"24725:88:16"}}]},"documentation":{"id":2334,"nodeType":"StructuredDocumentation","src":"23499:396:16","text":"@notice Performs a call to purchase an ERC1155, then transfers the ERC1155 to a specified recipient\n @param inputs The inputs for the protocol and ERC1155 transfer, encoded\n @param protocol The protocol to pass the calldata to\n @return success True on success of the command, false on failure\n @return output The outputs or error messages, if any, from the command"},"id":2399,"implemented":true,"kind":"function","modifiers":[],"name":"callAndTransfer1155","nameLocation":"23909:19:16","nodeType":"FunctionDefinition","parameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2336,"mutability":"mutable","name":"inputs","nameLocation":"23944:6:16","nodeType":"VariableDeclaration","scope":2399,"src":"23929:21:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2335,"name":"bytes","nodeType":"ElementaryTypeName","src":"23929:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2338,"mutability":"mutable","name":"protocol","nameLocation":"23960:8:16","nodeType":"VariableDeclaration","scope":2399,"src":"23952:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2337,"name":"address","nodeType":"ElementaryTypeName","src":"23952:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23928:41:16"},"returnParameters":{"id":2344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2341,"mutability":"mutable","name":"success","nameLocation":"24009:7:16","nodeType":"VariableDeclaration","scope":2399,"src":"24004:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2340,"name":"bool","nodeType":"ElementaryTypeName","src":"24004:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2343,"mutability":"mutable","name":"output","nameLocation":"24031:6:16","nodeType":"VariableDeclaration","scope":2399,"src":"24018:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2342,"name":"bytes","nodeType":"ElementaryTypeName","src":"24018:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"24003:35:16"},"scope":2419,"src":"23900:920:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2417,"nodeType":"Block","src":"25295:119:16","statements":[{"AST":{"nodeType":"YulBlock","src":"25314:60:16","statements":[{"nodeType":"YulAssignment","src":"25328:36:16","value":{"arguments":[{"name":"inputs.offset","nodeType":"YulIdentifier","src":"25350:13:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25337:12:16"},"nodeType":"YulFunctionCall","src":"25337:27:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"25328:5:16"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2402,"isOffset":true,"isSlot":false,"src":"25350:13:16","suffix":"offset","valueSize":1},{"declaration":2405,"isOffset":false,"isSlot":false,"src":"25328:5:16","valueSize":1}],"id":2409,"nodeType":"InlineAssembly","src":"25305:69:16"},{"expression":{"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2410,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2407,"src":"25383:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25405:1:16","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":2411,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"25390:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25397:7:16","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"25390:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":2414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25390:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"25383:24:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2416,"nodeType":"ExpressionStatement","src":"25383:24:16"}]},"documentation":{"id":2400,"nodeType":"StructuredDocumentation","src":"24826:357:16","text":"@notice Helper function to extract `value` and `data` parameters from input bytes string\n @dev The helper assumes that `value` is the first parameter, and `data` is the second\n @param inputs The bytes string beginning with value and data parameters\n @return value The 256 bit integer value\n @return data The data bytes string"},"id":2418,"implemented":true,"kind":"function","modifiers":[],"name":"getValueAndData","nameLocation":"25197:15:16","nodeType":"FunctionDefinition","parameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2402,"mutability":"mutable","name":"inputs","nameLocation":"25228:6:16","nodeType":"VariableDeclaration","scope":2418,"src":"25213:21:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2401,"name":"bytes","nodeType":"ElementaryTypeName","src":"25213:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25212:23:16"},"returnParameters":{"id":2408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2405,"mutability":"mutable","name":"value","nameLocation":"25267:5:16","nodeType":"VariableDeclaration","scope":2418,"src":"25259:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2404,"name":"uint256","nodeType":"ElementaryTypeName","src":"25259:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2407,"mutability":"mutable","name":"data","nameLocation":"25289:4:16","nodeType":"VariableDeclaration","scope":2418,"src":"25274:19:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2406,"name":"bytes","nodeType":"ElementaryTypeName","src":"25274:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25258:36:16"},"scope":2419,"src":"25188:226:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2420,"src":"1022:24394:16","usedErrors":[1236,1238,1240,1242,1244,2425,3093,3095,3097,3099,3564,3672,3932,3934,3936,3938,3940,4811,4813,4815,7269]}],"src":"45:25372:16"},"id":16},"contracts/base/LockAndMsgSender.sol":{"ast":{"absolutePath":"contracts/base/LockAndMsgSender.sol","exportedSymbols":{"Constants":[3067],"LockAndMsgSender":[2497]},"id":2498,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2421,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:17"},{"absolutePath":"contracts/libraries/Constants.sol","file":"../libraries/Constants.sol","id":2423,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2498,"sourceUnit":3068,"src":"71:53:17","symbolAliases":[{"foreign":{"id":2422,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"79:9:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"LockAndMsgSender","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2497,"linearizedBaseContracts":[2497],"name":"LockAndMsgSender","nameLocation":"135:16:17","nodeType":"ContractDefinition","nodes":[{"errorSelector":"6f5ffb7e","id":2425,"name":"ContractLocked","nameLocation":"164:14:17","nodeType":"ErrorDefinition","parameters":{"id":2424,"nodeType":"ParameterList","parameters":[],"src":"178:2:17"},"src":"158:23:17"},{"constant":true,"id":2431,"mutability":"constant","name":"NOT_LOCKED_FLAG","nameLocation":"213:15:17","nodeType":"VariableDeclaration","scope":2497,"src":"187:54:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2426,"name":"address","nodeType":"ElementaryTypeName","src":"187:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"31","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"239:1:17","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":2428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"231:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2427,"name":"address","nodeType":"ElementaryTypeName","src":"231:7:17","typeDescriptions":{}}},"id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"231:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2434,"mutability":"mutable","name":"lockedBy","nameLocation":"264:8:17","nodeType":"VariableDeclaration","scope":2497,"src":"247:43:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2432,"name":"address","nodeType":"ElementaryTypeName","src":"247:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"id":2433,"name":"NOT_LOCKED_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"275:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"body":{"id":2464,"nodeType":"Block","src":"320:252:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2436,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"334:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"338:6:17","memberName":"sender","nodeType":"MemberAccess","src":"334:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2440,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"356:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_LockAndMsgSender_$2497","typeString":"contract LockAndMsgSender"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LockAndMsgSender_$2497","typeString":"contract LockAndMsgSender"}],"id":2439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"348:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:17","typeDescriptions":{}}},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"348:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"334:27:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2462,"nodeType":"Block","src":"540:26:17","statements":[{"id":2461,"nodeType":"PlaceholderStatement","src":"554:1:17"}]},"id":2463,"nodeType":"IfStatement","src":"330:236:17","trueBody":{"id":2460,"nodeType":"Block","src":"363:171:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2443,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"381:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2444,"name":"NOT_LOCKED_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"393:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"381:27:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2449,"nodeType":"IfStatement","src":"377:56:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2446,"name":"ContractLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2425,"src":"417:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"417:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2448,"nodeType":"RevertStatement","src":"410:23:17"}},{"expression":{"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2450,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"447:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2451,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"458:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"462:6:17","memberName":"sender","nodeType":"MemberAccess","src":"458:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"447:21:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2454,"nodeType":"ExpressionStatement","src":"447:21:17"},{"id":2455,"nodeType":"PlaceholderStatement","src":"482:1:17"},{"expression":{"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2456,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"497:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2457,"name":"NOT_LOCKED_FLAG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"508:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"497:26:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2459,"nodeType":"ExpressionStatement","src":"497:26:17"}]}}]},"id":2465,"name":"isNotLocked","nameLocation":"306:11:17","nodeType":"ModifierDefinition","parameters":{"id":2435,"nodeType":"ParameterList","parameters":[],"src":"317:2:17"},"src":"297:275:17","virtual":false,"visibility":"internal"},{"body":{"id":2495,"nodeType":"Block","src":"841:234:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2473,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"855:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2474,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"868:9:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"878:10:17","memberName":"MSG_SENDER","nodeType":"MemberAccess","referencedDeclaration":3033,"src":"868:20:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"855:33:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2480,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"940:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2481,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"953:9:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":2482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"963:12:17","memberName":"ADDRESS_THIS","nodeType":"MemberAccess","referencedDeclaration":3040,"src":"953:22:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"940:35:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2492,"nodeType":"Block","src":"1028:41:17","statements":[{"expression":{"id":2490,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"1049:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2472,"id":2491,"nodeType":"Return","src":"1042:16:17"}]},"id":2493,"nodeType":"IfStatement","src":"936:133:17","trueBody":{"id":2489,"nodeType":"Block","src":"977:45:17","statements":[{"expression":{"arguments":[{"id":2486,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1006:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_LockAndMsgSender_$2497","typeString":"contract LockAndMsgSender"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LockAndMsgSender_$2497","typeString":"contract LockAndMsgSender"}],"id":2485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"998:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2484,"name":"address","nodeType":"ElementaryTypeName","src":"998:7:17","typeDescriptions":{}}},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"998:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2472,"id":2488,"nodeType":"Return","src":"991:20:17"}]}},"id":2494,"nodeType":"IfStatement","src":"851:218:17","trueBody":{"id":2479,"nodeType":"Block","src":"890:40:17","statements":[{"expression":{"id":2477,"name":"lockedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"911:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2472,"id":2478,"nodeType":"Return","src":"904:15:17"}]}}]},"documentation":{"id":2466,"nodeType":"StructuredDocumentation","src":"578:194:17","text":"@notice Calculates the recipient address for a command\n @param recipient The recipient or recipient-flag for the command\n @return output The resultant recipient for the command"},"id":2496,"implemented":true,"kind":"function","modifiers":[],"name":"map","nameLocation":"786:3:17","nodeType":"FunctionDefinition","parameters":{"id":2469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2468,"mutability":"mutable","name":"recipient","nameLocation":"798:9:17","nodeType":"VariableDeclaration","scope":2496,"src":"790:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2467,"name":"address","nodeType":"ElementaryTypeName","src":"790:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"789:19:17"},"returnParameters":{"id":2472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2496,"src":"832:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2470,"name":"address","nodeType":"ElementaryTypeName","src":"832:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"831:9:17"},"scope":2497,"src":"777:298:17","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2498,"src":"126:951:17","usedErrors":[2425]}],"src":"45:1033:17"},"id":17},"contracts/base/RewardsCollector.sol":{"ast":{"absolutePath":"contracts/base/RewardsCollector.sol","exportedSymbols":{"ERC20":[8531],"IRewardsCollector":[2813],"RewardsCollector":[2563],"RouterImmutables":[2788],"SafeTransferLib":[9180]},"id":2564,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2499,"literals":["solidity","^","0.8",".15"],"nodeType":"PragmaDirective","src":"45:24:18"},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":2501,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2564,"sourceUnit":8532,"src":"71:51:18","symbolAliases":[{"foreign":{"id":2500,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"79:5:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/utils/SafeTransferLib.sol","file":"solmate/src/utils/SafeTransferLib.sol","id":2503,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2564,"sourceUnit":9181,"src":"123:70:18","symbolAliases":[{"foreign":{"id":2502,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9180,"src":"131:15:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RouterImmutables.sol","file":"./RouterImmutables.sol","id":2505,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2564,"sourceUnit":2789,"src":"194:56:18","symbolAliases":[{"foreign":{"id":2504,"name":"RouterImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"202:16:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IRewardsCollector.sol","file":"../interfaces/IRewardsCollector.sol","id":2507,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2564,"sourceUnit":2814,"src":"251:70:18","symbolAliases":[{"foreign":{"id":2506,"name":"IRewardsCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"259:17:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2508,"name":"IRewardsCollector","nameLocations":["361:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":2813,"src":"361:17:18"},"id":2509,"nodeType":"InheritanceSpecifier","src":"361:17:18"},{"baseName":{"id":2510,"name":"RouterImmutables","nameLocations":["380:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":2788,"src":"380:16:18"},"id":2511,"nodeType":"InheritanceSpecifier","src":"380:16:18"}],"canonicalName":"RewardsCollector","contractDependencies":[],"contractKind":"contract","fullyImplemented":false,"id":2563,"linearizedBaseContracts":[2563,2788,2813],"name":"RewardsCollector","nameLocation":"341:16:18","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2515,"libraryName":{"id":2512,"name":"SafeTransferLib","nameLocations":["409:15:18"],"nodeType":"IdentifierPath","referencedDeclaration":9180,"src":"409:15:18"},"nodeType":"UsingForDirective","src":"403:32:18","typeName":{"id":2514,"nodeType":"UserDefinedTypeName","pathNode":{"id":2513,"name":"ERC20","nameLocations":["429:5:18"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"429:5:18"},"referencedDeclaration":8531,"src":"429:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}}},{"anonymous":false,"eventSelector":"1e8f03f716bc104bf7d728131967a0c771e85ab54d09c1e2d6ed9e0bc4e2a16c","id":2519,"name":"RewardsSent","nameLocation":"447:11:18","nodeType":"EventDefinition","parameters":{"id":2518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2517,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"467:6:18","nodeType":"VariableDeclaration","scope":2519,"src":"459:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2516,"name":"uint256","nodeType":"ElementaryTypeName","src":"459:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"458:16:18"},"src":"441:34:18"},{"errorSelector":"7d529919","id":2521,"name":"UnableToClaim","nameLocation":"487:13:18","nodeType":"ErrorDefinition","parameters":{"id":2520,"nodeType":"ParameterList","parameters":[],"src":"500:2:18"},"src":"481:22:18"},{"baseFunctions":[2812],"body":{"id":2561,"nodeType":"Block","src":"611:309:18","statements":[{"assignments":[2528,null],"declarations":[{"constant":false,"id":2528,"mutability":"mutable","name":"success","nameLocation":"627:7:18","nodeType":"VariableDeclaration","scope":2561,"src":"622:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2527,"name":"bool","nodeType":"ElementaryTypeName","src":"622:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2533,"initialValue":{"arguments":[{"id":2531,"name":"looksRareClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2524,"src":"675:14:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2529,"name":"LOOKS_RARE_REWARDS_DISTRIBUTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"639:30:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"670:4:18","memberName":"call","nodeType":"MemberAccess","src":"639:35:18","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":2532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"639:51:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"621:69:18"},{"condition":{"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"704:8:18","subExpression":{"id":2534,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"705:7:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2539,"nodeType":"IfStatement","src":"700:36:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2536,"name":"UnableToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"721:13:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"721:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2538,"nodeType":"RevertStatement","src":"714:22:18"}},{"assignments":[2541],"declarations":[{"constant":false,"id":2541,"mutability":"mutable","name":"balance","nameLocation":"755:7:18","nodeType":"VariableDeclaration","scope":2561,"src":"747:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2540,"name":"uint256","nodeType":"ElementaryTypeName","src":"747:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2549,"initialValue":{"arguments":[{"arguments":[{"id":2546,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"800:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsCollector_$2563","typeString":"contract RewardsCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RewardsCollector_$2563","typeString":"contract RewardsCollector"}],"id":2545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"792:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:18","typeDescriptions":{}}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"792:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2542,"name":"LOOKS_RARE_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"765:16:18","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"782:9:18","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"765:26:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"765:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"747:59:18"},{"expression":{"arguments":[{"id":2553,"name":"ROUTER_REWARDS_DISTRIBUTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"842:26:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2554,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"870:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2550,"name":"LOOKS_RARE_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"816:16:18","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"833:8:18","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8281,"src":"816:25:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"816:62:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2556,"nodeType":"ExpressionStatement","src":"816:62:18"},{"eventCall":{"arguments":[{"id":2558,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"905:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2557,"name":"RewardsSent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"893:11:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"893:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2560,"nodeType":"EmitStatement","src":"888:25:18"}]},"documentation":{"id":2522,"nodeType":"StructuredDocumentation","src":"509:33:18","text":"@inheritdoc IRewardsCollector"},"functionSelector":"709a1cc2","id":2562,"implemented":true,"kind":"function","modifiers":[],"name":"collectRewards","nameLocation":"556:14:18","nodeType":"FunctionDefinition","parameters":{"id":2525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2524,"mutability":"mutable","name":"looksRareClaim","nameLocation":"586:14:18","nodeType":"VariableDeclaration","scope":2562,"src":"571:29:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2523,"name":"bytes","nodeType":"ElementaryTypeName","src":"571:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"570:31:18"},"returnParameters":{"id":2526,"nodeType":"ParameterList","parameters":[],"src":"611:0:18"},"scope":2563,"src":"547:373:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2564,"src":"323:599:18","usedErrors":[2521]}],"src":"45:878:18"},"id":18},"contracts/base/RouterImmutables.sol":{"ast":{"absolutePath":"contracts/base/RouterImmutables.sol","exportedSymbols":{"ERC20":[8531],"IAllowanceTransfer":[6600],"ISAMB":[2891],"RouterImmutables":[2788],"RouterParameters":[2612]},"id":2789,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2565,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:19"},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"permit2/src/interfaces/IAllowanceTransfer.sol","id":2567,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2789,"sourceUnit":6601,"src":"71:81:19","symbolAliases":[{"foreign":{"id":2566,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"79:18:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":2569,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2789,"sourceUnit":8532,"src":"153:51:19","symbolAliases":[{"foreign":{"id":2568,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"161:5:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/ISAMB.sol","file":"../interfaces/external/ISAMB.sol","id":2571,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2789,"sourceUnit":2892,"src":"205:55:19","symbolAliases":[{"foreign":{"id":2570,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"213:5:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"RouterParameters","id":2612,"members":[{"constant":false,"id":2573,"mutability":"mutable","name":"permit2","nameLocation":"300:7:19","nodeType":"VariableDeclaration","scope":2612,"src":"292:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2572,"name":"address","nodeType":"ElementaryTypeName","src":"292:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2575,"mutability":"mutable","name":"samb","nameLocation":"321:4:19","nodeType":"VariableDeclaration","scope":2612,"src":"313:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2574,"name":"address","nodeType":"ElementaryTypeName","src":"313:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2577,"mutability":"mutable","name":"seaportV1_5","nameLocation":"339:11:19","nodeType":"VariableDeclaration","scope":2612,"src":"331:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"331:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2579,"mutability":"mutable","name":"seaportV1_4","nameLocation":"364:11:19","nodeType":"VariableDeclaration","scope":2612,"src":"356:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2578,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2581,"mutability":"mutable","name":"openseaConduit","nameLocation":"389:14:19","nodeType":"VariableDeclaration","scope":2612,"src":"381:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2580,"name":"address","nodeType":"ElementaryTypeName","src":"381:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2583,"mutability":"mutable","name":"nftxZap","nameLocation":"417:7:19","nodeType":"VariableDeclaration","scope":2612,"src":"409:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2582,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2585,"mutability":"mutable","name":"x2y2","nameLocation":"438:4:19","nodeType":"VariableDeclaration","scope":2612,"src":"430:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2584,"name":"address","nodeType":"ElementaryTypeName","src":"430:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2587,"mutability":"mutable","name":"foundation","nameLocation":"456:10:19","nodeType":"VariableDeclaration","scope":2612,"src":"448:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2586,"name":"address","nodeType":"ElementaryTypeName","src":"448:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2589,"mutability":"mutable","name":"sudoswap","nameLocation":"480:8:19","nodeType":"VariableDeclaration","scope":2612,"src":"472:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2588,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2591,"mutability":"mutable","name":"elementMarket","nameLocation":"502:13:19","nodeType":"VariableDeclaration","scope":2612,"src":"494:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2590,"name":"address","nodeType":"ElementaryTypeName","src":"494:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2593,"mutability":"mutable","name":"nft20Zap","nameLocation":"529:8:19","nodeType":"VariableDeclaration","scope":2612,"src":"521:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2592,"name":"address","nodeType":"ElementaryTypeName","src":"521:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2595,"mutability":"mutable","name":"cryptopunks","nameLocation":"551:11:19","nodeType":"VariableDeclaration","scope":2612,"src":"543:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2594,"name":"address","nodeType":"ElementaryTypeName","src":"543:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2597,"mutability":"mutable","name":"looksRareV2","nameLocation":"576:11:19","nodeType":"VariableDeclaration","scope":2612,"src":"568:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2596,"name":"address","nodeType":"ElementaryTypeName","src":"568:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2599,"mutability":"mutable","name":"routerRewardsDistributor","nameLocation":"601:24:19","nodeType":"VariableDeclaration","scope":2612,"src":"593:32:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2598,"name":"address","nodeType":"ElementaryTypeName","src":"593:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2601,"mutability":"mutable","name":"looksRareRewardsDistributor","nameLocation":"639:27:19","nodeType":"VariableDeclaration","scope":2612,"src":"631:35:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2600,"name":"address","nodeType":"ElementaryTypeName","src":"631:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2603,"mutability":"mutable","name":"looksRareToken","nameLocation":"680:14:19","nodeType":"VariableDeclaration","scope":2612,"src":"672:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2602,"name":"address","nodeType":"ElementaryTypeName","src":"672:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2605,"mutability":"mutable","name":"classicFactory","nameLocation":"708:14:19","nodeType":"VariableDeclaration","scope":2612,"src":"700:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2604,"name":"address","nodeType":"ElementaryTypeName","src":"700:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2607,"mutability":"mutable","name":"clFactory","nameLocation":"736:9:19","nodeType":"VariableDeclaration","scope":2612,"src":"728:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2606,"name":"address","nodeType":"ElementaryTypeName","src":"728:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2609,"mutability":"mutable","name":"pairInitCodeHash","nameLocation":"759:16:19","nodeType":"VariableDeclaration","scope":2612,"src":"751:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"751:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2611,"mutability":"mutable","name":"poolInitCodeHash","nameLocation":"789:16:19","nodeType":"VariableDeclaration","scope":2612,"src":"781:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"781:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RouterParameters","nameLocation":"269:16:19","nodeType":"StructDefinition","scope":2789,"src":"262:546:19","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"RouterImmutables","contractDependencies":[],"contractKind":"contract","documentation":{"id":2613,"nodeType":"StructuredDocumentation","src":"810:138:19","text":"@title Router Immutable Storage contract\n @notice Used along with the `RouterParameters` struct for ease of cross-chain deployment"},"fullyImplemented":true,"id":2788,"linearizedBaseContracts":[2788],"name":"RouterImmutables","nameLocation":"957:16:19","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":2614,"nodeType":"StructuredDocumentation","src":"980:21:19","text":"@dev SAMB address"},"id":2617,"mutability":"immutable","name":"SAMB","nameLocation":"1031:4:19","nodeType":"VariableDeclaration","scope":2788,"src":"1006:29:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"},"typeName":{"id":2616,"nodeType":"UserDefinedTypeName","pathNode":{"id":2615,"name":"ISAMB","nameLocations":["1006:5:19"],"nodeType":"IdentifierPath","referencedDeclaration":2891,"src":"1006:5:19"},"referencedDeclaration":2891,"src":"1006:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2618,"nodeType":"StructuredDocumentation","src":"1042:24:19","text":"@dev Permit2 address"},"id":2621,"mutability":"immutable","name":"PERMIT2","nameLocation":"1109:7:19","nodeType":"VariableDeclaration","scope":2788,"src":"1071:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"},"typeName":{"id":2620,"nodeType":"UserDefinedTypeName","pathNode":{"id":2619,"name":"IAllowanceTransfer","nameLocations":["1071:18:19"],"nodeType":"IdentifierPath","referencedDeclaration":6600,"src":"1071:18:19"},"referencedDeclaration":6600,"src":"1071:18:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2622,"nodeType":"StructuredDocumentation","src":"1123:28:19","text":"@dev Seaport 1.5 address"},"id":2624,"mutability":"immutable","name":"SEAPORT_V1_5","nameLocation":"1183:12:19","nodeType":"VariableDeclaration","scope":2788,"src":"1156:39:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2623,"name":"address","nodeType":"ElementaryTypeName","src":"1156:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2625,"nodeType":"StructuredDocumentation","src":"1202:28:19","text":"@dev Seaport 1.4 address"},"id":2627,"mutability":"immutable","name":"SEAPORT_V1_4","nameLocation":"1262:12:19","nodeType":"VariableDeclaration","scope":2788,"src":"1235:39:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"1235:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2628,"nodeType":"StructuredDocumentation","src":"1281:82:19","text":"@dev The address of OpenSea's conduit used in both Seaport 1.4 and Seaport 1.5"},"id":2630,"mutability":"immutable","name":"OPENSEA_CONDUIT","nameLocation":"1395:15:19","nodeType":"VariableDeclaration","scope":2788,"src":"1368:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2629,"name":"address","nodeType":"ElementaryTypeName","src":"1368:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2631,"nodeType":"StructuredDocumentation","src":"1417:69:19","text":"@dev The address of NFTX zap contract for interfacing with vaults"},"id":2633,"mutability":"immutable","name":"NFTX_ZAP","nameLocation":"1518:8:19","nodeType":"VariableDeclaration","scope":2788,"src":"1491:35:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2632,"name":"address","nodeType":"ElementaryTypeName","src":"1491:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2634,"nodeType":"StructuredDocumentation","src":"1533:28:19","text":"@dev The address of X2Y2"},"id":2636,"mutability":"immutable","name":"X2Y2","nameLocation":"1593:4:19","nodeType":"VariableDeclaration","scope":2788,"src":"1566:31:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2635,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2638,"mutability":"immutable","name":"FOUNDATION","nameLocation":"1669:10:19","nodeType":"VariableDeclaration","scope":2788,"src":"1642:37:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2637,"name":"address","nodeType":"ElementaryTypeName","src":"1642:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2640,"mutability":"immutable","name":"SUDOSWAP","nameLocation":"1758:8:19","nodeType":"VariableDeclaration","scope":2788,"src":"1731:35:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2639,"name":"address","nodeType":"ElementaryTypeName","src":"1731:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2642,"mutability":"immutable","name":"ELEMENT_MARKET","nameLocation":"1842:14:19","nodeType":"VariableDeclaration","scope":2788,"src":"1815:41:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2641,"name":"address","nodeType":"ElementaryTypeName","src":"1815:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2644,"mutability":"immutable","name":"NFT20_ZAP","nameLocation":"1938:9:19","nodeType":"VariableDeclaration","scope":2788,"src":"1911:36:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2643,"name":"address","nodeType":"ElementaryTypeName","src":"1911:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2646,"mutability":"immutable","name":"CRYPTOPUNKS","nameLocation":"2044:11:19","nodeType":"VariableDeclaration","scope":2788,"src":"2017:38:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2645,"name":"address","nodeType":"ElementaryTypeName","src":"2017:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2647,"nodeType":"StructuredDocumentation","src":"2062:35:19","text":"@dev The address of LooksRareV2"},"id":2649,"mutability":"immutable","name":"LOOKS_RARE_V2","nameLocation":"2129:13:19","nodeType":"VariableDeclaration","scope":2788,"src":"2102:40:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2648,"name":"address","nodeType":"ElementaryTypeName","src":"2102:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2650,"nodeType":"StructuredDocumentation","src":"2149:39:19","text":"@dev The address of LooksRare token"},"id":2653,"mutability":"immutable","name":"LOOKS_RARE_TOKEN","nameLocation":"2218:16:19","nodeType":"VariableDeclaration","scope":2788,"src":"2193:41:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":2652,"nodeType":"UserDefinedTypeName","pathNode":{"id":2651,"name":"ERC20","nameLocations":["2193:5:19"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"2193:5:19"},"referencedDeclaration":8531,"src":"2193:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2654,"nodeType":"StructuredDocumentation","src":"2241:53:19","text":"@dev The address of LooksRare rewards distributor"},"id":2656,"mutability":"immutable","name":"LOOKS_RARE_REWARDS_DISTRIBUTOR","nameLocation":"2326:30:19","nodeType":"VariableDeclaration","scope":2788,"src":"2299:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2655,"name":"address","nodeType":"ElementaryTypeName","src":"2299:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2657,"nodeType":"StructuredDocumentation","src":"2363:50:19","text":"@dev The address of router rewards distributor"},"id":2659,"mutability":"immutable","name":"ROUTER_REWARDS_DISTRIBUTOR","nameLocation":"2445:26:19","nodeType":"VariableDeclaration","scope":2788,"src":"2418:53:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2658,"name":"address","nodeType":"ElementaryTypeName","src":"2418:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"2478:36:19","text":"@dev The address of AstraFactory"},"id":2662,"mutability":"immutable","name":"ASTRA_CLASSIC_FACTORY","nameLocation":"2546:21:19","nodeType":"VariableDeclaration","scope":2788,"src":"2519:48:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2661,"name":"address","nodeType":"ElementaryTypeName","src":"2519:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2663,"nodeType":"StructuredDocumentation","src":"2574:35:19","text":"@dev The AstraPair initcodehash"},"id":2665,"mutability":"immutable","name":"ASTRA_CLASSIC_PAIR_INIT_CODE_HASH","nameLocation":"2641:33:19","nodeType":"VariableDeclaration","scope":2788,"src":"2614:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2614:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2666,"nodeType":"StructuredDocumentation","src":"2681:38:19","text":"@dev The address of AstraCLFactory"},"id":2668,"mutability":"immutable","name":"ASTRA_CL_FACTORY","nameLocation":"2751:16:19","nodeType":"VariableDeclaration","scope":2788,"src":"2724:43:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"2724:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":2669,"nodeType":"StructuredDocumentation","src":"2774:37:19","text":"@dev The AstraCLPool initcodehash"},"id":2671,"mutability":"immutable","name":"ASTRA_CL_POOL_INIT_CODE_HASH","nameLocation":"2843:28:19","nodeType":"VariableDeclaration","scope":2788,"src":"2816:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2670,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2816:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"RouterImmutables.Spenders","id":2674,"members":[{"id":2672,"name":"OSConduit","nameLocation":"2902:9:19","nodeType":"EnumValue","src":"2902:9:19"},{"id":2673,"name":"Sudoswap","nameLocation":"2921:8:19","nodeType":"EnumValue","src":"2921:8:19"}],"name":"Spenders","nameLocation":"2883:8:19","nodeType":"EnumDefinition","src":"2878:57:19"},{"body":{"id":2786,"nodeType":"Block","src":"2985:977:19","statements":[{"expression":{"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2680,"name":"PERMIT2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"2995:7:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2682,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3024:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3031:7:19","memberName":"permit2","nodeType":"MemberAccess","referencedDeclaration":2573,"src":"3024:14:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2681,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"3005:18:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAllowanceTransfer_$6600_$","typeString":"type(contract IAllowanceTransfer)"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3005:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"src":"2995:44:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"id":2686,"nodeType":"ExpressionStatement","src":"2995:44:19"},{"expression":{"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2687,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"3049:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2689,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3062:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3069:4:19","memberName":"samb","nodeType":"MemberAccess","referencedDeclaration":2575,"src":"3062:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2688,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"3056:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$2891_$","typeString":"type(contract ISAMB)"}},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3056:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"src":"3049:25:19","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"id":2693,"nodeType":"ExpressionStatement","src":"3049:25:19"},{"expression":{"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2694,"name":"SEAPORT_V1_5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"3084:12:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2695,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3099:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3106:11:19","memberName":"seaportV1_5","nodeType":"MemberAccess","referencedDeclaration":2577,"src":"3099:18:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3084:33:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2698,"nodeType":"ExpressionStatement","src":"3084:33:19"},{"expression":{"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2699,"name":"SEAPORT_V1_4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"3127:12:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2700,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3142:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3149:11:19","memberName":"seaportV1_4","nodeType":"MemberAccess","referencedDeclaration":2579,"src":"3142:18:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3127:33:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2703,"nodeType":"ExpressionStatement","src":"3127:33:19"},{"expression":{"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2704,"name":"OPENSEA_CONDUIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"3170:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2705,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3188:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3195:14:19","memberName":"openseaConduit","nodeType":"MemberAccess","referencedDeclaration":2581,"src":"3188:21:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3170:39:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2708,"nodeType":"ExpressionStatement","src":"3170:39:19"},{"expression":{"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2709,"name":"NFTX_ZAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"3219:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2710,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3230:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3237:7:19","memberName":"nftxZap","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"3230:14:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3219:25:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2713,"nodeType":"ExpressionStatement","src":"3219:25:19"},{"expression":{"id":2717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2714,"name":"X2Y2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"3254:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2715,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3261:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3268:4:19","memberName":"x2y2","nodeType":"MemberAccess","referencedDeclaration":2585,"src":"3261:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3254:18:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2718,"nodeType":"ExpressionStatement","src":"3254:18:19"},{"expression":{"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2719,"name":"FOUNDATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2638,"src":"3282:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2720,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3295:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3302:10:19","memberName":"foundation","nodeType":"MemberAccess","referencedDeclaration":2587,"src":"3295:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3282:30:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2723,"nodeType":"ExpressionStatement","src":"3282:30:19"},{"expression":{"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2724,"name":"SUDOSWAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"3322:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2725,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3333:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2726,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3340:8:19","memberName":"sudoswap","nodeType":"MemberAccess","referencedDeclaration":2589,"src":"3333:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3322:26:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2728,"nodeType":"ExpressionStatement","src":"3322:26:19"},{"expression":{"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2729,"name":"ELEMENT_MARKET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"3358:14:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2730,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3375:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2731,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3382:13:19","memberName":"elementMarket","nodeType":"MemberAccess","referencedDeclaration":2591,"src":"3375:20:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3358:37:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2733,"nodeType":"ExpressionStatement","src":"3358:37:19"},{"expression":{"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2734,"name":"NFT20_ZAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"3405:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2735,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3417:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3424:8:19","memberName":"nft20Zap","nodeType":"MemberAccess","referencedDeclaration":2593,"src":"3417:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3405:27:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2738,"nodeType":"ExpressionStatement","src":"3405:27:19"},{"expression":{"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2739,"name":"CRYPTOPUNKS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"3442:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2740,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3456:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3463:11:19","memberName":"cryptopunks","nodeType":"MemberAccess","referencedDeclaration":2595,"src":"3456:18:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3442:32:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2743,"nodeType":"ExpressionStatement","src":"3442:32:19"},{"expression":{"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2744,"name":"LOOKS_RARE_V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"3484:13:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2745,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3500:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3507:11:19","memberName":"looksRareV2","nodeType":"MemberAccess","referencedDeclaration":2597,"src":"3500:18:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3484:34:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2748,"nodeType":"ExpressionStatement","src":"3484:34:19"},{"expression":{"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2749,"name":"LOOKS_RARE_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"3528:16:19","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2751,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3553:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3560:14:19","memberName":"looksRareToken","nodeType":"MemberAccess","referencedDeclaration":2603,"src":"3553:21:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2750,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"3547:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3547:28:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"src":"3528:47:19","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":2755,"nodeType":"ExpressionStatement","src":"3528:47:19"},{"expression":{"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2756,"name":"LOOKS_RARE_REWARDS_DISTRIBUTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"3585:30:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2757,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3618:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3625:27:19","memberName":"looksRareRewardsDistributor","nodeType":"MemberAccess","referencedDeclaration":2601,"src":"3618:34:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3585:67:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2760,"nodeType":"ExpressionStatement","src":"3585:67:19"},{"expression":{"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2761,"name":"ROUTER_REWARDS_DISTRIBUTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"3662:26:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2762,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3691:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3698:24:19","memberName":"routerRewardsDistributor","nodeType":"MemberAccess","referencedDeclaration":2599,"src":"3691:31:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3662:60:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2765,"nodeType":"ExpressionStatement","src":"3662:60:19"},{"expression":{"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2766,"name":"ASTRA_CLASSIC_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"3732:21:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2767,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3756:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3763:14:19","memberName":"classicFactory","nodeType":"MemberAccess","referencedDeclaration":2605,"src":"3756:21:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3732:45:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2770,"nodeType":"ExpressionStatement","src":"3732:45:19"},{"expression":{"id":2774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2771,"name":"ASTRA_CLASSIC_PAIR_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"3787:33:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2772,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3823:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3830:16:19","memberName":"pairInitCodeHash","nodeType":"MemberAccess","referencedDeclaration":2609,"src":"3823:23:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3787:59:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2775,"nodeType":"ExpressionStatement","src":"3787:59:19"},{"expression":{"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2776,"name":"ASTRA_CL_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"3856:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2777,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3875:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3882:9:19","memberName":"clFactory","nodeType":"MemberAccess","referencedDeclaration":2607,"src":"3875:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3856:35:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2780,"nodeType":"ExpressionStatement","src":"3856:35:19"},{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2781,"name":"ASTRA_CL_POOL_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"3901:28:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2782,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3932:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters memory"}},"id":2783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3939:16:19","memberName":"poolInitCodeHash","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"3932:23:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3901:54:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2785,"nodeType":"ExpressionStatement","src":"3901:54:19"}]},"id":2787,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2677,"mutability":"mutable","name":"params","nameLocation":"2977:6:19","nodeType":"VariableDeclaration","scope":2787,"src":"2953:30:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_memory_ptr","typeString":"struct RouterParameters"},"typeName":{"id":2676,"nodeType":"UserDefinedTypeName","pathNode":{"id":2675,"name":"RouterParameters","nameLocations":["2953:16:19"],"nodeType":"IdentifierPath","referencedDeclaration":2612,"src":"2953:16:19"},"referencedDeclaration":2612,"src":"2953:16:19","typeDescriptions":{"typeIdentifier":"t_struct$_RouterParameters_$2612_storage_ptr","typeString":"struct RouterParameters"}},"visibility":"internal"}],"src":"2952:32:19"},"returnParameters":{"id":2679,"nodeType":"ParameterList","parameters":[],"src":"2985:0:19"},"scope":2788,"src":"2941:1021:19","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":2789,"src":"948:3016:19","usedErrors":[]}],"src":"45:3920:19"},"id":19},"contracts/deploy/UnsupportedProtocol.sol":{"ast":{"absolutePath":"contracts/deploy/UnsupportedProtocol.sol","exportedSymbols":{"UnsupportedProtocol":[2801]},"id":2802,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2790,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:20"},{"abstract":false,"baseContracts":[],"canonicalName":"UnsupportedProtocol","contractDependencies":[],"contractKind":"contract","documentation":{"id":2791,"nodeType":"StructuredDocumentation","src":"71:159:20","text":"@title Dummy contract that always reverts\n @notice Used as a placeholder to ensure reverts on attempted calls to protocols unsupported on a given chain"},"fullyImplemented":true,"id":2801,"linearizedBaseContracts":[2801],"name":"UnsupportedProtocol","nameLocation":"239:19:20","nodeType":"ContractDefinition","nodes":[{"errorSelector":"ea3559ef","id":2793,"name":"UnsupportedProtocolError","nameLocation":"271:24:20","nodeType":"ErrorDefinition","parameters":{"id":2792,"nodeType":"ParameterList","parameters":[],"src":"295:2:20"},"src":"265:33:20"},{"body":{"id":2799,"nodeType":"Block","src":"324:50:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2796,"name":"UnsupportedProtocolError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"341:24:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"341:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"RevertStatement","src":"334:33:20"}]},"id":2800,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2794,"nodeType":"ParameterList","parameters":[],"src":"312:2:20"},"returnParameters":{"id":2795,"nodeType":"ParameterList","parameters":[],"src":"324:0:20"},"scope":2801,"src":"304:70:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2802,"src":"230:146:20","usedErrors":[2793]}],"src":"45:332:20"},"id":20},"contracts/interfaces/IRewardsCollector.sol":{"ast":{"absolutePath":"contracts/interfaces/IRewardsCollector.sol","exportedSymbols":{"ERC20":[8531],"IRewardsCollector":[2813]},"id":2814,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2803,"literals":["solidity","^","0.8",".15"],"nodeType":"PragmaDirective","src":"45:24:21"},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":2805,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2814,"sourceUnit":8532,"src":"71:51:21","symbolAliases":[{"foreign":{"id":2804,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"79:5:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IRewardsCollector","contractDependencies":[],"contractKind":"interface","documentation":{"id":2806,"nodeType":"StructuredDocumentation","src":"124:211:21","text":"@title LooksRare Rewards Collector\n @notice Implements a permissionless call to fetch LooksRare rewards earned by Universal Router users\n and transfers them to an external rewards distributor contract"},"fullyImplemented":false,"id":2813,"linearizedBaseContracts":[2813],"name":"IRewardsCollector","nameLocation":"345:17:21","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2807,"nodeType":"StructuredDocumentation","src":"369:171:21","text":"@notice Fetches users' LooksRare rewards and sends them to the distributor contract\n @param looksRareClaim The data required by LooksRare to claim reward tokens"},"functionSelector":"709a1cc2","id":2812,"implemented":false,"kind":"function","modifiers":[],"name":"collectRewards","nameLocation":"554:14:21","nodeType":"FunctionDefinition","parameters":{"id":2810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2809,"mutability":"mutable","name":"looksRareClaim","nameLocation":"584:14:21","nodeType":"VariableDeclaration","scope":2812,"src":"569:29:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2808,"name":"bytes","nodeType":"ElementaryTypeName","src":"569:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"568:31:21"},"returnParameters":{"id":2811,"nodeType":"ParameterList","parameters":[],"src":"608:0:21"},"scope":2813,"src":"545:64:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2814,"src":"335:276:21","usedErrors":[]}],"src":"45:567:21"},"id":21},"contracts/interfaces/IUniversalRouter.sol":{"ast":{"absolutePath":"contracts/interfaces/IUniversalRouter.sol","exportedSymbols":{"IERC1155Receiver":[814],"IERC721Receiver":[910],"IRewardsCollector":[2813],"IUniversalRouter":[2855]},"id":2856,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2815,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:22"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":2817,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2856,"sourceUnit":911,"src":"71:89:22","symbolAliases":[{"foreign":{"id":2816,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"79:15:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","id":2819,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2856,"sourceUnit":815,"src":"161:92:22","symbolAliases":[{"foreign":{"id":2818,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"169:16:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IRewardsCollector.sol","file":"./IRewardsCollector.sol","id":2821,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2856,"sourceUnit":2814,"src":"254:58:22","symbolAliases":[{"foreign":{"id":2820,"name":"IRewardsCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"262:17:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2822,"name":"IRewardsCollector","nameLocations":["344:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":2813,"src":"344:17:22"},"id":2823,"nodeType":"InheritanceSpecifier","src":"344:17:22"},{"baseName":{"id":2824,"name":"IERC721Receiver","nameLocations":["363:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":910,"src":"363:15:22"},"id":2825,"nodeType":"InheritanceSpecifier","src":"363:15:22"},{"baseName":{"id":2826,"name":"IERC1155Receiver","nameLocations":["380:16:22"],"nodeType":"IdentifierPath","referencedDeclaration":814,"src":"380:16:22"},"id":2827,"nodeType":"InheritanceSpecifier","src":"380:16:22"}],"canonicalName":"IUniversalRouter","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2855,"linearizedBaseContracts":[2855,814,922,910,2813],"name":"IUniversalRouter","nameLocation":"324:16:22","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2828,"nodeType":"StructuredDocumentation","src":"403:53:22","text":"@notice Thrown when a required command has failed"},"errorSelector":"2c4029e9","id":2834,"name":"ExecutionFailed","nameLocation":"467:15:22","nodeType":"ErrorDefinition","parameters":{"id":2833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2830,"mutability":"mutable","name":"commandIndex","nameLocation":"491:12:22","nodeType":"VariableDeclaration","scope":2834,"src":"483:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2829,"name":"uint256","nodeType":"ElementaryTypeName","src":"483:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2832,"mutability":"mutable","name":"message","nameLocation":"511:7:22","nodeType":"VariableDeclaration","scope":2834,"src":"505:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2831,"name":"bytes","nodeType":"ElementaryTypeName","src":"505:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"482:37:22"},"src":"461:59:22"},{"documentation":{"id":2835,"nodeType":"StructuredDocumentation","src":"526:71:22","text":"@notice Thrown when attempting to send AMB directly to the contract"},"errorSelector":"44ce54a9","id":2837,"name":"AMBNotAccepted","nameLocation":"608:14:22","nodeType":"ErrorDefinition","parameters":{"id":2836,"nodeType":"ParameterList","parameters":[],"src":"622:2:22"},"src":"602:23:22"},{"documentation":{"id":2838,"nodeType":"StructuredDocumentation","src":"631:67:22","text":"@notice Thrown when executing commands with an expired deadline"},"errorSelector":"5bf6f916","id":2840,"name":"TransactionDeadlinePassed","nameLocation":"709:25:22","nodeType":"ErrorDefinition","parameters":{"id":2839,"nodeType":"ParameterList","parameters":[],"src":"734:2:22"},"src":"703:34:22"},{"documentation":{"id":2841,"nodeType":"StructuredDocumentation","src":"743:101:22","text":"@notice Thrown when attempting to execute commands and an incorrect number of inputs are provided"},"errorSelector":"ff633a38","id":2843,"name":"LengthMismatch","nameLocation":"855:14:22","nodeType":"ErrorDefinition","parameters":{"id":2842,"nodeType":"ParameterList","parameters":[],"src":"869:2:22"},"src":"849:23:22"},{"documentation":{"id":2844,"nodeType":"StructuredDocumentation","src":"878:349:22","text":"@notice Executes encoded commands along with provided inputs. Reverts if deadline has expired.\n @param commands A set of concatenated commands, each 1 byte in length\n @param inputs An array of byte strings containing abi encoded inputs for each command\n @param deadline The deadline by which the transaction must be executed"},"functionSelector":"3593564c","id":2854,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1241:7:22","nodeType":"FunctionDefinition","parameters":{"id":2852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2846,"mutability":"mutable","name":"commands","nameLocation":"1264:8:22","nodeType":"VariableDeclaration","scope":2854,"src":"1249:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2845,"name":"bytes","nodeType":"ElementaryTypeName","src":"1249:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2849,"mutability":"mutable","name":"inputs","nameLocation":"1291:6:22","nodeType":"VariableDeclaration","scope":2854,"src":"1274:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2847,"name":"bytes","nodeType":"ElementaryTypeName","src":"1274:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2848,"nodeType":"ArrayTypeName","src":"1274:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2851,"mutability":"mutable","name":"deadline","nameLocation":"1307:8:22","nodeType":"VariableDeclaration","scope":2854,"src":"1299:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1248:68:22"},"returnParameters":{"id":2853,"nodeType":"ParameterList","parameters":[],"src":"1333:0:22"},"scope":2855,"src":"1232:102:22","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2856,"src":"314:1022:22","usedErrors":[2834,2837,2840,2843]}],"src":"45:1292:22"},"id":22},"contracts/interfaces/external/ICryptoPunksMarket.sol":{"ast":{"absolutePath":"contracts/interfaces/external/ICryptoPunksMarket.sol","exportedSymbols":{"ICryptoPunksMarket":[2873]},"id":2874,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2857,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"45:23:23"},{"abstract":false,"baseContracts":[],"canonicalName":"ICryptoPunksMarket","contractDependencies":[],"contractKind":"interface","documentation":{"id":2858,"nodeType":"StructuredDocumentation","src":"70:43:23","text":"@title Interface for CryptoPunksMarket"},"fullyImplemented":false,"id":2873,"linearizedBaseContracts":[2873],"name":"ICryptoPunksMarket","nameLocation":"123:18:23","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2859,"nodeType":"StructuredDocumentation","src":"148:28:23","text":"@notice Buy a cryptopunk"},"functionSelector":"8264fe98","id":2864,"implemented":false,"kind":"function","modifiers":[],"name":"buyPunk","nameLocation":"190:7:23","nodeType":"FunctionDefinition","parameters":{"id":2862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2861,"mutability":"mutable","name":"punkIndex","nameLocation":"206:9:23","nodeType":"VariableDeclaration","scope":2864,"src":"198:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2860,"name":"uint256","nodeType":"ElementaryTypeName","src":"198:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"197:19:23"},"returnParameters":{"id":2863,"nodeType":"ParameterList","parameters":[],"src":"233:0:23"},"scope":2873,"src":"181:53:23","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2865,"nodeType":"StructuredDocumentation","src":"240:52:23","text":"@notice Transfer a cryptopunk to another address"},"functionSelector":"8b72a2ec","id":2872,"implemented":false,"kind":"function","modifiers":[],"name":"transferPunk","nameLocation":"306:12:23","nodeType":"FunctionDefinition","parameters":{"id":2870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2867,"mutability":"mutable","name":"to","nameLocation":"327:2:23","nodeType":"VariableDeclaration","scope":2872,"src":"319:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2866,"name":"address","nodeType":"ElementaryTypeName","src":"319:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2869,"mutability":"mutable","name":"punkIndex","nameLocation":"339:9:23","nodeType":"VariableDeclaration","scope":2872,"src":"331:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2868,"name":"uint256","nodeType":"ElementaryTypeName","src":"331:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"318:31:23"},"returnParameters":{"id":2871,"nodeType":"ParameterList","parameters":[],"src":"358:0:23"},"scope":2873,"src":"297:62:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2874,"src":"113:248:23","usedErrors":[]}],"src":"45:317:23"},"id":23},"contracts/interfaces/external/ISAMB.sol":{"ast":{"absolutePath":"contracts/interfaces/external/ISAMB.sol","exportedSymbols":{"IERC20":[892],"ISAMB":[2891]},"id":2892,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2875,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"45:23:24"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":2877,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2892,"sourceUnit":893,"src":"70:70:24","symbolAliases":[{"foreign":{"id":2876,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"78:6:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2879,"name":"IERC20","nameLocations":["192:6:24"],"nodeType":"IdentifierPath","referencedDeclaration":892,"src":"192:6:24"},"id":2880,"nodeType":"InheritanceSpecifier","src":"192:6:24"}],"canonicalName":"ISAMB","contractDependencies":[],"contractKind":"interface","documentation":{"id":2878,"nodeType":"StructuredDocumentation","src":"142:31:24","text":"@title Interface for WETH9"},"fullyImplemented":false,"id":2891,"linearizedBaseContracts":[2891,892],"name":"ISAMB","nameLocation":"183:5:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2881,"nodeType":"StructuredDocumentation","src":"205:46:24","text":"@notice Deposit ether to get wrapped ether"},"functionSelector":"d0e30db0","id":2884,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"265:7:24","nodeType":"FunctionDefinition","parameters":{"id":2882,"nodeType":"ParameterList","parameters":[],"src":"272:2:24"},"returnParameters":{"id":2883,"nodeType":"ParameterList","parameters":[],"src":"291:0:24"},"scope":2891,"src":"256:36:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2885,"nodeType":"StructuredDocumentation","src":"298:47:24","text":"@notice Withdraw wrapped ether to get ether"},"functionSelector":"2e1a7d4d","id":2890,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"359:8:24","nodeType":"FunctionDefinition","parameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2890,"src":"368:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"368:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"367:9:24"},"returnParameters":{"id":2889,"nodeType":"ParameterList","parameters":[],"src":"385:0:24"},"scope":2891,"src":"350:36:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2892,"src":"173:215:24","usedErrors":[]}],"src":"45:344:24"},"id":24},"contracts/libraries/Commands.sol":{"ast":{"absolutePath":"contracts/libraries/Commands.sol","exportedSymbols":{"Commands":[3006]},"id":3007,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2893,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:25"},{"abstract":false,"baseContracts":[],"canonicalName":"Commands","contractDependencies":[],"contractKind":"library","documentation":{"id":2894,"nodeType":"StructuredDocumentation","src":"71:70:25","text":"@title Commands\n @notice Command Flags used to decode commands"},"fullyImplemented":true,"id":3006,"linearizedBaseContracts":[3006],"name":"Commands","nameLocation":"149:8:25","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2897,"mutability":"constant","name":"FLAG_ALLOW_REVERT","nameLocation":"238:17:25","nodeType":"VariableDeclaration","scope":3006,"src":"213:49:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2895,"name":"bytes1","nodeType":"ElementaryTypeName","src":"213:6:25","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"value":{"hexValue":"30783830","id":2896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"258:4:25","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":2900,"mutability":"constant","name":"COMMAND_TYPE_MASK","nameLocation":"293:17:25","nodeType":"VariableDeclaration","scope":3006,"src":"268:49:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2898,"name":"bytes1","nodeType":"ElementaryTypeName","src":"268:6:25","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"value":{"hexValue":"30783366","id":2899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"313:4:25","typeDescriptions":{"typeIdentifier":"t_rational_63_by_1","typeString":"int_const 63"},"value":"0x3f"},"visibility":"internal"},{"constant":true,"id":2903,"mutability":"constant","name":"CL_SWAP_EXACT_IN","nameLocation":"491:16:25","nodeType":"VariableDeclaration","scope":3006,"src":"474:40:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2901,"name":"uint256","nodeType":"ElementaryTypeName","src":"474:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":2902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"510:4:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"id":2906,"mutability":"constant","name":"CL_SWAP_EXACT_OUT","nameLocation":"537:17:25","nodeType":"VariableDeclaration","scope":3006,"src":"520:41:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2904,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":2905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:4:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"id":2909,"mutability":"constant","name":"PERMIT2_TRANSFER_FROM","nameLocation":"584:21:25","nodeType":"VariableDeclaration","scope":3006,"src":"567:45:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"567:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783032","id":2908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"608:4:25","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"internal"},{"constant":true,"id":2912,"mutability":"constant","name":"PERMIT2_PERMIT_BATCH","nameLocation":"635:20:25","nodeType":"VariableDeclaration","scope":3006,"src":"618:44:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2910,"name":"uint256","nodeType":"ElementaryTypeName","src":"618:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783033","id":2911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"658:4:25","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"visibility":"internal"},{"constant":true,"id":2915,"mutability":"constant","name":"SWEEP","nameLocation":"685:5:25","nodeType":"VariableDeclaration","scope":3006,"src":"668:29:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2913,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":2914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"693:4:25","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":2918,"mutability":"constant","name":"TRANSFER","nameLocation":"720:8:25","nodeType":"VariableDeclaration","scope":3006,"src":"703:32:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2916,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783035","id":2917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"731:4:25","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"0x05"},"visibility":"internal"},{"constant":true,"id":2921,"mutability":"constant","name":"PAY_PORTION","nameLocation":"758:11:25","nodeType":"VariableDeclaration","scope":3006,"src":"741:35:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2919,"name":"uint256","nodeType":"ElementaryTypeName","src":"741:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783036","id":2920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"772:4:25","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"0x06"},"visibility":"internal"},{"constant":true,"id":2924,"mutability":"constant","name":"FIRST_IF_BOUNDARY","nameLocation":"1011:17:25","nodeType":"VariableDeclaration","scope":3006,"src":"994:41:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2922,"name":"uint256","nodeType":"ElementaryTypeName","src":"994:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783038","id":2923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1031:4:25","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"visibility":"internal"},{"constant":true,"id":2927,"mutability":"constant","name":"CLASSIC_SWAP_EXACT_IN","nameLocation":"1144:21:25","nodeType":"VariableDeclaration","scope":3006,"src":"1127:45:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1127:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783038","id":2926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1168:4:25","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"visibility":"internal"},{"constant":true,"id":2930,"mutability":"constant","name":"CLASSIC_SWAP_EXACT_OUT","nameLocation":"1195:22:25","nodeType":"VariableDeclaration","scope":3006,"src":"1178:46:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1178:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783039","id":2929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1220:4:25","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"visibility":"internal"},{"constant":true,"id":2933,"mutability":"constant","name":"PERMIT2_PERMIT","nameLocation":"1247:14:25","nodeType":"VariableDeclaration","scope":3006,"src":"1230:38:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783061","id":2932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1264:4:25","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"visibility":"internal"},{"constant":true,"id":2936,"mutability":"constant","name":"WRAP_AMB","nameLocation":"1291:8:25","nodeType":"VariableDeclaration","scope":3006,"src":"1274:32:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783062","id":2935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1302:4:25","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"0x0b"},"visibility":"internal"},{"constant":true,"id":2939,"mutability":"constant","name":"UNWRAP_SAMB","nameLocation":"1329:11:25","nodeType":"VariableDeclaration","scope":3006,"src":"1312:35:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2937,"name":"uint256","nodeType":"ElementaryTypeName","src":"1312:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783063","id":2938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:4:25","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"visibility":"internal"},{"constant":true,"id":2942,"mutability":"constant","name":"PERMIT2_TRANSFER_FROM_BATCH","nameLocation":"1370:27:25","nodeType":"VariableDeclaration","scope":3006,"src":"1353:51:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2940,"name":"uint256","nodeType":"ElementaryTypeName","src":"1353:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783064","id":2941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1400:4:25","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"visibility":"internal"},{"constant":true,"id":2945,"mutability":"constant","name":"BALANCE_CHECK_ERC20","nameLocation":"1427:19:25","nodeType":"VariableDeclaration","scope":3006,"src":"1410:43:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2943,"name":"uint256","nodeType":"ElementaryTypeName","src":"1410:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783065","id":2944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1449:4:25","typeDescriptions":{"typeIdentifier":"t_rational_14_by_1","typeString":"int_const 14"},"value":"0x0e"},"visibility":"internal"},{"constant":true,"id":2948,"mutability":"constant","name":"SECOND_IF_BOUNDARY","nameLocation":"1688:18:25","nodeType":"VariableDeclaration","scope":3006,"src":"1671:42:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2946,"name":"uint256","nodeType":"ElementaryTypeName","src":"1671:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783130","id":2947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1709:4:25","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"visibility":"internal"},{"constant":true,"id":2951,"mutability":"constant","name":"SEAPORT_V1_5","nameLocation":"1820:12:25","nodeType":"VariableDeclaration","scope":3006,"src":"1803:36:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2949,"name":"uint256","nodeType":"ElementaryTypeName","src":"1803:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783130","id":2950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1835:4:25","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"visibility":"internal"},{"constant":true,"id":2954,"mutability":"constant","name":"LOOKS_RARE_V2","nameLocation":"1862:13:25","nodeType":"VariableDeclaration","scope":3006,"src":"1845:37:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2952,"name":"uint256","nodeType":"ElementaryTypeName","src":"1845:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":2953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1878:4:25","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"id":2957,"mutability":"constant","name":"NFTX","nameLocation":"1905:4:25","nodeType":"VariableDeclaration","scope":3006,"src":"1888:28:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2955,"name":"uint256","nodeType":"ElementaryTypeName","src":"1888:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":2956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1912:4:25","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"id":2960,"mutability":"constant","name":"CRYPTOPUNKS","nameLocation":"1939:11:25","nodeType":"VariableDeclaration","scope":3006,"src":"1922:35:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2958,"name":"uint256","nodeType":"ElementaryTypeName","src":"1922:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783133","id":2959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1953:4:25","typeDescriptions":{"typeIdentifier":"t_rational_19_by_1","typeString":"int_const 19"},"value":"0x13"},"visibility":"internal"},{"constant":true,"id":2963,"mutability":"constant","name":"OWNER_CHECK_721","nameLocation":"1993:15:25","nodeType":"VariableDeclaration","scope":3006,"src":"1976:39:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2961,"name":"uint256","nodeType":"ElementaryTypeName","src":"1976:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783135","id":2962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2011:4:25","typeDescriptions":{"typeIdentifier":"t_rational_21_by_1","typeString":"int_const 21"},"value":"0x15"},"visibility":"internal"},{"constant":true,"id":2966,"mutability":"constant","name":"OWNER_CHECK_1155","nameLocation":"2038:16:25","nodeType":"VariableDeclaration","scope":3006,"src":"2021:40:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2964,"name":"uint256","nodeType":"ElementaryTypeName","src":"2021:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783136","id":2965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2057:4:25","typeDescriptions":{"typeIdentifier":"t_rational_22_by_1","typeString":"int_const 22"},"value":"0x16"},"visibility":"internal"},{"constant":true,"id":2969,"mutability":"constant","name":"SWEEP_ERC721","nameLocation":"2084:12:25","nodeType":"VariableDeclaration","scope":3006,"src":"2067:36:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2967,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783137","id":2968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2099:4:25","typeDescriptions":{"typeIdentifier":"t_rational_23_by_1","typeString":"int_const 23"},"value":"0x17"},"visibility":"internal"},{"constant":true,"id":2972,"mutability":"constant","name":"THIRD_IF_BOUNDARY","nameLocation":"2303:17:25","nodeType":"VariableDeclaration","scope":3006,"src":"2286:41:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2970,"name":"uint256","nodeType":"ElementaryTypeName","src":"2286:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783138","id":2971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2323:4:25","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"0x18"},"visibility":"internal"},{"constant":true,"id":2975,"mutability":"constant","name":"X2Y2_721","nameLocation":"2435:8:25","nodeType":"VariableDeclaration","scope":3006,"src":"2418:32:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2973,"name":"uint256","nodeType":"ElementaryTypeName","src":"2418:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783138","id":2974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:4:25","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"0x18"},"visibility":"internal"},{"constant":true,"id":2978,"mutability":"constant","name":"SUDOSWAP","nameLocation":"2473:8:25","nodeType":"VariableDeclaration","scope":3006,"src":"2456:32:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2976,"name":"uint256","nodeType":"ElementaryTypeName","src":"2456:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783139","id":2977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2484:4:25","typeDescriptions":{"typeIdentifier":"t_rational_25_by_1","typeString":"int_const 25"},"value":"0x19"},"visibility":"internal"},{"constant":true,"id":2981,"mutability":"constant","name":"NFT20","nameLocation":"2511:5:25","nodeType":"VariableDeclaration","scope":3006,"src":"2494:29:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2979,"name":"uint256","nodeType":"ElementaryTypeName","src":"2494:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783161","id":2980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2519:4:25","typeDescriptions":{"typeIdentifier":"t_rational_26_by_1","typeString":"int_const 26"},"value":"0x1a"},"visibility":"internal"},{"constant":true,"id":2984,"mutability":"constant","name":"X2Y2_1155","nameLocation":"2546:9:25","nodeType":"VariableDeclaration","scope":3006,"src":"2529:33:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2982,"name":"uint256","nodeType":"ElementaryTypeName","src":"2529:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783162","id":2983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2558:4:25","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"0x1b"},"visibility":"internal"},{"constant":true,"id":2987,"mutability":"constant","name":"FOUNDATION","nameLocation":"2585:10:25","nodeType":"VariableDeclaration","scope":3006,"src":"2568:34:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2985,"name":"uint256","nodeType":"ElementaryTypeName","src":"2568:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783163","id":2986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2598:4:25","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"0x1c"},"visibility":"internal"},{"constant":true,"id":2990,"mutability":"constant","name":"SWEEP_ERC1155","nameLocation":"2625:13:25","nodeType":"VariableDeclaration","scope":3006,"src":"2608:37:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2988,"name":"uint256","nodeType":"ElementaryTypeName","src":"2608:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783164","id":2989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2641:4:25","typeDescriptions":{"typeIdentifier":"t_rational_29_by_1","typeString":"int_const 29"},"value":"0x1d"},"visibility":"internal"},{"constant":true,"id":2993,"mutability":"constant","name":"ELEMENT_MARKET","nameLocation":"2668:14:25","nodeType":"VariableDeclaration","scope":3006,"src":"2651:38:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2991,"name":"uint256","nodeType":"ElementaryTypeName","src":"2651:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783165","id":2992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2685:4:25","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"0x1e"},"visibility":"internal"},{"constant":true,"id":2996,"mutability":"constant","name":"FOURTH_IF_BOUNDARY","nameLocation":"2924:18:25","nodeType":"VariableDeclaration","scope":3006,"src":"2907:42:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2994,"name":"uint256","nodeType":"ElementaryTypeName","src":"2907:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":2995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2945:4:25","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":2999,"mutability":"constant","name":"SEAPORT_V1_4","nameLocation":"3012:12:25","nodeType":"VariableDeclaration","scope":3006,"src":"2995:36:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2997,"name":"uint256","nodeType":"ElementaryTypeName","src":"2995:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":2998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3027:4:25","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":3002,"mutability":"constant","name":"EXECUTE_SUB_PLAN","nameLocation":"3054:16:25","nodeType":"VariableDeclaration","scope":3006,"src":"3037:40:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3000,"name":"uint256","nodeType":"ElementaryTypeName","src":"3037:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":3001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3073:4:25","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"id":3005,"mutability":"constant","name":"APPROVE_ERC20","nameLocation":"3100:13:25","nodeType":"VariableDeclaration","scope":3006,"src":"3083:37:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3003,"name":"uint256","nodeType":"ElementaryTypeName","src":"3083:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":3004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3116:4:25","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"}],"scope":3007,"src":"141:3039:25","usedErrors":[]}],"src":"45:3136:25"},"id":25},"contracts/libraries/Constants.sol":{"ast":{"absolutePath":"contracts/libraries/Constants.sol","exportedSymbols":{"Constants":[3067],"ISAMB":[2891]},"id":3068,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3008,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:26"},{"absolutePath":"contracts/interfaces/external/ISAMB.sol","file":"../interfaces/external/ISAMB.sol","id":3010,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3068,"sourceUnit":2892,"src":"71:55:26","symbolAliases":[{"foreign":{"id":3009,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"79:5:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Constants","contractDependencies":[],"contractKind":"library","documentation":{"id":3011,"nodeType":"StructuredDocumentation","src":"128:82:26","text":"@title Constant state\n @notice Constant state used by the Universal Router"},"fullyImplemented":true,"id":3067,"linearizedBaseContracts":[3067],"name":"Constants","nameLocation":"218:9:26","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":3012,"nodeType":"StructuredDocumentation","src":"234:192:26","text":"@dev Used for identifying cases when this contract's balance of a token is to be used as an input\n This value is equivalent to 1<<255, i.e. a singular 1 in the most significant bit."},"id":3015,"mutability":"constant","name":"CONTRACT_BALANCE","nameLocation":"457:16:26","nodeType":"VariableDeclaration","scope":3067,"src":"431:111:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3013,"name":"uint256","nodeType":"ElementaryTypeName","src":"431:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307838303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":3014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"476:66:26","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"value":"0x8000000000000000000000000000000000000000000000000000000000000000"},"visibility":"internal"},{"constant":true,"documentation":{"id":3016,"nodeType":"StructuredDocumentation","src":"549:89:26","text":"@dev Used for identifying cases when a classic pair has already received input tokens"},"id":3019,"mutability":"constant","name":"ALREADY_PAID","nameLocation":"669:12:26","nodeType":"VariableDeclaration","scope":3067,"src":"643:42:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3017,"name":"uint256","nodeType":"ElementaryTypeName","src":"643:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":3018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"684:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"documentation":{"id":3020,"nodeType":"StructuredDocumentation","src":"692:78:26","text":"@dev Used as a flag for identifying the transfer of AMB instead of a token"},"id":3026,"mutability":"constant","name":"AMB","nameLocation":"801:3:26","nodeType":"VariableDeclaration","scope":3067,"src":"775:42:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3021,"name":"address","nodeType":"ElementaryTypeName","src":"775:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":3024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"815:1:26","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":3023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"807:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3022,"name":"address","nodeType":"ElementaryTypeName","src":"807:7:26","typeDescriptions":{}}},"id":3025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"807:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"documentation":{"id":3027,"nodeType":"StructuredDocumentation","src":"824:105:26","text":"@dev Used as a flag for identifying that msg.sender should be used, saves gas by sending more 0 bytes"},"id":3033,"mutability":"constant","name":"MSG_SENDER","nameLocation":"960:10:26","nodeType":"VariableDeclaration","scope":3067,"src":"934:49:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3028,"name":"address","nodeType":"ElementaryTypeName","src":"934:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"31","id":3031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"981:1:26","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":3030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"973:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3029,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:26","typeDescriptions":{}}},"id":3032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"973:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"documentation":{"id":3034,"nodeType":"StructuredDocumentation","src":"990:103:26","text":"@dev Used as a flag for identifying address(this) should be used, saves gas by sending more 0 bytes"},"id":3040,"mutability":"constant","name":"ADDRESS_THIS","nameLocation":"1124:12:26","nodeType":"VariableDeclaration","scope":3067,"src":"1098:51:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3035,"name":"address","nodeType":"ElementaryTypeName","src":"1098:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"32","id":3038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1147:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":3037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1139:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3036,"name":"address","nodeType":"ElementaryTypeName","src":"1139:7:26","typeDescriptions":{}}},"id":3039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1139:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"documentation":{"id":3041,"nodeType":"StructuredDocumentation","src":"1156:48:26","text":"@dev The length of the bytes encoded address"},"id":3044,"mutability":"constant","name":"ADDR_SIZE","nameLocation":"1235:9:26","nodeType":"VariableDeclaration","scope":3067,"src":"1209:40:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3042,"name":"uint256","nodeType":"ElementaryTypeName","src":"1209:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":3043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1247:2:26","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"internal"},{"constant":true,"documentation":{"id":3045,"nodeType":"StructuredDocumentation","src":"1256:44:26","text":"@dev The length of the bytes encoded fee"},"id":3048,"mutability":"constant","name":"CL_FEE_SIZE","nameLocation":"1331:11:26","nodeType":"VariableDeclaration","scope":3067,"src":"1305:41:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1305:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":3047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"documentation":{"id":3049,"nodeType":"StructuredDocumentation","src":"1353:67:26","text":"@dev The offset of a single token address (20) and pool fee (3)"},"id":3054,"mutability":"constant","name":"NEXT_CL_POOL_OFFSET","nameLocation":"1451:19:26","nodeType":"VariableDeclaration","scope":3067,"src":"1425:71:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3050,"name":"uint256","nodeType":"ElementaryTypeName","src":"1425:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":3051,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"1473:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3052,"name":"CL_FEE_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3048,"src":"1485:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1473:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"documentation":{"id":3055,"nodeType":"StructuredDocumentation","src":"1503:89:26","text":"@dev The offset of an encoded pool key\n Token (20) + Fee (3) + Token (20) = 43"},"id":3060,"mutability":"constant","name":"CL_POP_OFFSET","nameLocation":"1623:13:26","nodeType":"VariableDeclaration","scope":3067,"src":"1597:73:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3056,"name":"uint256","nodeType":"ElementaryTypeName","src":"1597:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":3057,"name":"NEXT_CL_POOL_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"1639:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3058,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"1661:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1639:31:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"documentation":{"id":3061,"nodeType":"StructuredDocumentation","src":"1677:72:26","text":"@dev The minimum length of an encoding that contains 2 or more pools"},"id":3066,"mutability":"constant","name":"MULTIPLE_CL_POOLS_MIN_LENGTH","nameLocation":"1780:28:26","nodeType":"VariableDeclaration","scope":3067,"src":"1754:92:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3062,"name":"uint256","nodeType":"ElementaryTypeName","src":"1754:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":3063,"name":"CL_POP_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3060,"src":"1811:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3064,"name":"NEXT_CL_POOL_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"1827:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1811:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"scope":3068,"src":"210:1639:26","usedErrors":[]}],"src":"45:1805:26"},"id":26},"contracts/modules/Payments.sol":{"ast":{"absolutePath":"contracts/modules/Payments.sol","exportedSymbols":{"Constants":[3067],"ERC1155":[8099],"ERC20":[8531],"ERC721":[9075],"Payments":[3544],"RouterImmutables":[2788],"SafeTransferLib":[9180]},"id":3545,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3069,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:27"},{"absolutePath":"contracts/libraries/Constants.sol","file":"../libraries/Constants.sol","id":3071,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3545,"sourceUnit":3068,"src":"71:53:27","symbolAliases":[{"foreign":{"id":3070,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"79:9:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RouterImmutables.sol","file":"../base/RouterImmutables.sol","id":3073,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3545,"sourceUnit":2789,"src":"125:62:27","symbolAliases":[{"foreign":{"id":3072,"name":"RouterImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"133:16:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/utils/SafeTransferLib.sol","file":"solmate/src/utils/SafeTransferLib.sol","id":3075,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3545,"sourceUnit":9181,"src":"188:70:27","symbolAliases":[{"foreign":{"id":3074,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9180,"src":"196:15:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":3077,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3545,"sourceUnit":8532,"src":"259:51:27","symbolAliases":[{"foreign":{"id":3076,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"267:5:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC721.sol","file":"solmate/src/tokens/ERC721.sol","id":3079,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3545,"sourceUnit":9096,"src":"311:53:27","symbolAliases":[{"foreign":{"id":3078,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"319:6:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC1155.sol","file":"solmate/src/tokens/ERC1155.sol","id":3081,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3545,"sourceUnit":8144,"src":"365:55:27","symbolAliases":[{"foreign":{"id":3080,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"373:7:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3083,"name":"RouterImmutables","nameLocations":["558:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":2788,"src":"558:16:27"},"id":3084,"nodeType":"InheritanceSpecifier","src":"558:16:27"}],"canonicalName":"Payments","contractDependencies":[],"contractKind":"contract","documentation":{"id":3082,"nodeType":"StructuredDocumentation","src":"422:106:27","text":"@title Payments contract\n @notice Performs various operations around the payment of ETH and tokens"},"fullyImplemented":false,"id":3544,"linearizedBaseContracts":[3544,2788],"name":"Payments","nameLocation":"546:8:27","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3088,"libraryName":{"id":3085,"name":"SafeTransferLib","nameLocations":["587:15:27"],"nodeType":"IdentifierPath","referencedDeclaration":9180,"src":"587:15:27"},"nodeType":"UsingForDirective","src":"581:32:27","typeName":{"id":3087,"nodeType":"UserDefinedTypeName","pathNode":{"id":3086,"name":"ERC20","nameLocations":["607:5:27"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"607:5:27"},"referencedDeclaration":8531,"src":"607:5:27","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}}},{"global":false,"id":3091,"libraryName":{"id":3089,"name":"SafeTransferLib","nameLocations":["624:15:27"],"nodeType":"IdentifierPath","referencedDeclaration":9180,"src":"624:15:27"},"nodeType":"UsingForDirective","src":"618:34:27","typeName":{"id":3090,"name":"address","nodeType":"ElementaryTypeName","src":"644:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"errorSelector":"675cae38","id":3093,"name":"InsufficientToken","nameLocation":"664:17:27","nodeType":"ErrorDefinition","parameters":{"id":3092,"nodeType":"ParameterList","parameters":[],"src":"681:2:27"},"src":"658:26:27"},{"errorSelector":"bb9278b6","id":3095,"name":"InsufficientAMB","nameLocation":"695:15:27","nodeType":"ErrorDefinition","parameters":{"id":3094,"nodeType":"ParameterList","parameters":[],"src":"710:2:27"},"src":"689:24:27"},{"errorSelector":"deaa01e6","id":3097,"name":"InvalidBips","nameLocation":"724:11:27","nodeType":"ErrorDefinition","parameters":{"id":3096,"nodeType":"ParameterList","parameters":[],"src":"735:2:27"},"src":"718:20:27"},{"errorSelector":"5461585f","id":3099,"name":"InvalidSpender","nameLocation":"749:14:27","nodeType":"ErrorDefinition","parameters":{"id":3098,"nodeType":"ParameterList","parameters":[],"src":"763:2:27"},"src":"743:23:27"},{"constant":true,"id":3102,"mutability":"constant","name":"FEE_BIPS_BASE","nameLocation":"798:13:27","nodeType":"VariableDeclaration","scope":3544,"src":"772:48:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3100,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31305f303030","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"814:6:27","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10_000"},"visibility":"internal"},{"body":{"id":3151,"nodeType":"Block","src":"1137:308:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3112,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1151:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3113,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"1160:9:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1170:3:27","memberName":"AMB","nodeType":"MemberAccess","referencedDeclaration":3026,"src":"1160:13:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1151:22:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3149,"nodeType":"Block","src":"1238:201:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3123,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"1256:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3124,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"1265:9:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1275:16:27","memberName":"CONTRACT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":3015,"src":"1265:26:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1256:35:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3140,"nodeType":"IfStatement","src":"1252:119:27","trueBody":{"id":3139,"nodeType":"Block","src":"1293:78:27","statements":[{"expression":{"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"1311:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3134,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1350:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3132,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:27","typeDescriptions":{}}},"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3129,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1325:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3128,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"1319:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1319:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1332:9:27","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"1319:22:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1319:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1311:45:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3138,"nodeType":"ExpressionStatement","src":"1311:45:27"}]}},{"expression":{"arguments":[{"id":3145,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"1411:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3146,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"1422:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3142,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1391:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3141,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"1385:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":3143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1398:12:27","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9159,"src":"1385:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$8531_$","typeString":"function (contract ERC20,address,uint256)"}},"id":3147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3148,"nodeType":"ExpressionStatement","src":"1385:43:27"}]},"id":3150,"nodeType":"IfStatement","src":"1147:292:27","trueBody":{"id":3122,"nodeType":"Block","src":"1175:57:27","statements":[{"expression":{"arguments":[{"id":3119,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"1215:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3116,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"1189:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1199:15:27","memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":9117,"src":"1189:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$bound_to$_t_address_$","typeString":"function (address,uint256)"}},"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1189:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3121,"nodeType":"ExpressionStatement","src":"1189:32:27"}]}}]},"documentation":{"id":3103,"nodeType":"StructuredDocumentation","src":"827:234:27","text":"@notice Pays an amount of ETH or ERC20 to a recipient\n @param token The token to pay (can be ETH using Constants.ETH)\n @param recipient The address that will receive the payment\n @param value The amount to pay"},"id":3152,"implemented":true,"kind":"function","modifiers":[],"name":"pay","nameLocation":"1075:3:27","nodeType":"FunctionDefinition","parameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3105,"mutability":"mutable","name":"token","nameLocation":"1087:5:27","nodeType":"VariableDeclaration","scope":3152,"src":"1079:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3104,"name":"address","nodeType":"ElementaryTypeName","src":"1079:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3107,"mutability":"mutable","name":"recipient","nameLocation":"1102:9:27","nodeType":"VariableDeclaration","scope":3152,"src":"1094:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3106,"name":"address","nodeType":"ElementaryTypeName","src":"1094:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"value","nameLocation":"1121:5:27","nodeType":"VariableDeclaration","scope":3152,"src":"1113:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3108,"name":"uint256","nodeType":"ElementaryTypeName","src":"1113:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1078:49:27"},"returnParameters":{"id":3111,"nodeType":"ParameterList","parameters":[],"src":"1137:0:27"},"scope":3544,"src":"1066:379:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3197,"nodeType":"Block","src":"1670:444:27","statements":[{"assignments":[3163],"declarations":[{"constant":false,"id":3163,"mutability":"mutable","name":"spenderAddress","nameLocation":"1745:14:27","nodeType":"VariableDeclaration","scope":3197,"src":"1737:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3162,"name":"address","nodeType":"ElementaryTypeName","src":"1737:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3164,"nodeType":"VariableDeclarationStatement","src":"1737:22:27"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3165,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3159,"src":"1845:7:27","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3166,"name":"Spenders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"1856:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Spenders_$2674_$","typeString":"type(enum RouterImmutables.Spenders)"}},"id":3167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1865:9:27","memberName":"OSConduit","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"1856:18:27","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}},"src":"1845:29:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev use 0 = Opensea Conduit for both Seaport v1.4 and v1.5","falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"},"id":3176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3173,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3159,"src":"1927:7:27","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3174,"name":"Spenders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"1938:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Spenders_$2674_$","typeString":"type(enum RouterImmutables.Spenders)"}},"id":3175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1947:8:27","memberName":"Sudoswap","nodeType":"MemberAccess","referencedDeclaration":2673,"src":"1938:17:27","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}},"src":"1927:28:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3181,"name":"InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"2004:14:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2004:16:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3183,"nodeType":"RevertStatement","src":"1997:23:27"},"id":3184,"nodeType":"IfStatement","src":"1923:97:27","trueBody":{"expression":{"id":3179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3177,"name":"spenderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"1957:14:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3178,"name":"SUDOSWAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"1974:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1957:25:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3180,"nodeType":"ExpressionStatement","src":"1957:25:27"}},"id":3185,"nodeType":"IfStatement","src":"1841:179:27","trueBody":{"expression":{"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3169,"name":"spenderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"1876:14:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3170,"name":"OPENSEA_CONDUIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"1893:15:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1876:32:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3172,"nodeType":"ExpressionStatement","src":"1876:32:27"}},{"expression":{"arguments":[{"id":3189,"name":"spenderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"2073:14:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":3192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2094:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3191,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3190,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2089:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2089:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2103:3:27","memberName":"max","nodeType":"MemberAccess","src":"2089:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3186,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"2055:5:27","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2061:11:27","memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":9179,"src":"2055:17:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$8531_$","typeString":"function (contract ERC20,address,uint256)"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2055:52:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3196,"nodeType":"ExpressionStatement","src":"2055:52:27"}]},"documentation":{"id":3153,"nodeType":"StructuredDocumentation","src":"1451:152:27","text":"@notice Approves a protocol to spend ERC20s in the router\n @param token The token to approve\n @param spender Which protocol to approve"},"id":3198,"implemented":true,"kind":"function","modifiers":[],"name":"approveERC20","nameLocation":"1617:12:27","nodeType":"FunctionDefinition","parameters":{"id":3160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3156,"mutability":"mutable","name":"token","nameLocation":"1636:5:27","nodeType":"VariableDeclaration","scope":3198,"src":"1630:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":3155,"nodeType":"UserDefinedTypeName","pathNode":{"id":3154,"name":"ERC20","nameLocations":["1630:5:27"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"1630:5:27"},"referencedDeclaration":8531,"src":"1630:5:27","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"},{"constant":false,"id":3159,"mutability":"mutable","name":"spender","nameLocation":"1652:7:27","nodeType":"VariableDeclaration","scope":3198,"src":"1643:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"},"typeName":{"id":3158,"nodeType":"UserDefinedTypeName","pathNode":{"id":3157,"name":"Spenders","nameLocations":["1643:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":2674,"src":"1643:8:27"},"referencedDeclaration":2674,"src":"1643:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Spenders_$2674","typeString":"enum RouterImmutables.Spenders"}},"visibility":"internal"}],"src":"1629:31:27"},"returnParameters":{"id":3161,"nodeType":"ParameterList","parameters":[],"src":"1670:0:27"},"scope":3544,"src":"1608:506:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3278,"nodeType":"Block","src":"2480:494:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3208,"name":"bips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3205,"src":"2494:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2502:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2494:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3211,"name":"bips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3205,"src":"2507:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3212,"name":"FEE_BIPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"2514:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2507:20:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2494:33:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3218,"nodeType":"IfStatement","src":"2490:59:27","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3215,"name":"InvalidBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"2536:11:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2536:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3217,"nodeType":"RevertStatement","src":"2529:20:27"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3219,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"2563:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3220,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"2572:9:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2582:3:27","memberName":"AMB","nodeType":"MemberAccess","referencedDeclaration":3026,"src":"2572:13:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2563:22:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3276,"nodeType":"Block","src":"2767:201:27","statements":[{"assignments":[3248],"declarations":[{"constant":false,"id":3248,"mutability":"mutable","name":"balance","nameLocation":"2789:7:27","nodeType":"VariableDeclaration","scope":3276,"src":"2781:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3247,"name":"uint256","nodeType":"ElementaryTypeName","src":"2781:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3258,"initialValue":{"arguments":[{"arguments":[{"id":3255,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2830:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2822:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3253,"name":"address","nodeType":"ElementaryTypeName","src":"2822:7:27","typeDescriptions":{}}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2822:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3250,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"2805:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3249,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"2799:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":3251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2812:9:27","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"2799:22:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2781:55:27"},{"assignments":[3260],"declarations":[{"constant":false,"id":3260,"mutability":"mutable","name":"amount","nameLocation":"2858:6:27","nodeType":"VariableDeclaration","scope":3276,"src":"2850:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3259,"name":"uint256","nodeType":"ElementaryTypeName","src":"2850:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3261,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"2868:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3262,"name":"bips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3205,"src":"2878:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2868:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3264,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2867:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3265,"name":"FEE_BIPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"2886:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2867:32:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2850:49:27"},{"expression":{"arguments":[{"id":3272,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"2939:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3273,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"2950:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3269,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"2919:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3268,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"2913:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2926:12:27","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9159,"src":"2913:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$8531_$","typeString":"function (contract ERC20,address,uint256)"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:44:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3275,"nodeType":"ExpressionStatement","src":"2913:44:27"}]},"id":3277,"nodeType":"IfStatement","src":"2559:409:27","trueBody":{"id":3246,"nodeType":"Block","src":"2587:174:27","statements":[{"assignments":[3224],"declarations":[{"constant":false,"id":3224,"mutability":"mutable","name":"balance","nameLocation":"2609:7:27","nodeType":"VariableDeclaration","scope":3246,"src":"2601:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3223,"name":"uint256","nodeType":"ElementaryTypeName","src":"2601:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3230,"initialValue":{"expression":{"arguments":[{"id":3227,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2627:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2619:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3225,"name":"address","nodeType":"ElementaryTypeName","src":"2619:7:27","typeDescriptions":{}}},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2619:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2633:7:27","memberName":"balance","nodeType":"MemberAccess","src":"2619:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2601:39:27"},{"assignments":[3232],"declarations":[{"constant":false,"id":3232,"mutability":"mutable","name":"amount","nameLocation":"2662:6:27","nodeType":"VariableDeclaration","scope":3246,"src":"2654:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3231,"name":"uint256","nodeType":"ElementaryTypeName","src":"2654:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3239,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3233,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3224,"src":"2672:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3234,"name":"bips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3205,"src":"2682:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2672:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3236,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2671:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3237,"name":"FEE_BIPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"2690:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2671:32:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2654:49:27"},{"expression":{"arguments":[{"id":3243,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"2743:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3240,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"2717:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2727:15:27","memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":9117,"src":"2717:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$bound_to$_t_address_$","typeString":"function (address,uint256)"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2717:33:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3245,"nodeType":"ExpressionStatement","src":"2717:33:27"}]}}]},"documentation":{"id":3199,"nodeType":"StructuredDocumentation","src":"2120:278:27","text":"@notice Pays a proportion of the contract's AMB or ERC20 to a recipient\n @param token The token to pay (can be AMB using Constants.AMB)\n @param recipient The address that will receive payment\n @param bips Portion in bips of whole balance of the contract"},"id":3279,"implemented":true,"kind":"function","modifiers":[],"name":"payPortion","nameLocation":"2412:10:27","nodeType":"FunctionDefinition","parameters":{"id":3206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3201,"mutability":"mutable","name":"token","nameLocation":"2431:5:27","nodeType":"VariableDeclaration","scope":3279,"src":"2423:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3200,"name":"address","nodeType":"ElementaryTypeName","src":"2423:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3203,"mutability":"mutable","name":"recipient","nameLocation":"2446:9:27","nodeType":"VariableDeclaration","scope":3279,"src":"2438:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3202,"name":"address","nodeType":"ElementaryTypeName","src":"2438:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3205,"mutability":"mutable","name":"bips","nameLocation":"2465:4:27","nodeType":"VariableDeclaration","scope":3279,"src":"2457:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3204,"name":"uint256","nodeType":"ElementaryTypeName","src":"2457:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2422:48:27"},"returnParameters":{"id":3207,"nodeType":"ParameterList","parameters":[],"src":"2480:0:27"},"scope":3544,"src":"2403:571:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3355,"nodeType":"Block","src":"3325:480:27","statements":[{"assignments":[3290],"declarations":[{"constant":false,"id":3290,"mutability":"mutable","name":"balance","nameLocation":"3343:7:27","nodeType":"VariableDeclaration","scope":3355,"src":"3335:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3289,"name":"uint256","nodeType":"ElementaryTypeName","src":"3335:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3291,"nodeType":"VariableDeclarationStatement","src":"3335:15:27"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3292,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"3364:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3293,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"3373:9:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3383:3:27","memberName":"AMB","nodeType":"MemberAccess","referencedDeclaration":3026,"src":"3373:13:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3364:22:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3353,"nodeType":"Block","src":"3582:217:27","statements":[{"expression":{"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3322,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3596:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3329,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3637:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3629:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3327,"name":"address","nodeType":"ElementaryTypeName","src":"3629:7:27","typeDescriptions":{}}},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3629:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3324,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"3612:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3323,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"3606:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3606:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":3326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3619:9:27","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"3606:22:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3606:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3596:47:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3333,"nodeType":"ExpressionStatement","src":"3596:47:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3334,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3661:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3335,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"3671:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3661:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3340,"nodeType":"IfStatement","src":"3657:55:27","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3337,"name":"InsufficientToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"3693:17:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3693:19:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3339,"nodeType":"RevertStatement","src":"3686:26:27"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3341,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3730:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3740:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3730:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3352,"nodeType":"IfStatement","src":"3726:62:27","trueBody":{"expression":{"arguments":[{"id":3348,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3284,"src":"3769:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3349,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3780:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3345,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"3749:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3344,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"3743:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3743:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3756:12:27","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9159,"src":"3743:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$8531_$","typeString":"function (contract ERC20,address,uint256)"}},"id":3350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3743:45:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3351,"nodeType":"ExpressionStatement","src":"3743:45:27"}}]},"id":3354,"nodeType":"IfStatement","src":"3360:439:27","trueBody":{"id":3321,"nodeType":"Block","src":"3388:188:27","statements":[{"expression":{"id":3302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3296,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3402:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":3299,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3420:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3412:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3297,"name":"address","nodeType":"ElementaryTypeName","src":"3412:7:27","typeDescriptions":{}}},"id":3300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3412:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3426:7:27","memberName":"balance","nodeType":"MemberAccess","src":"3412:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3402:31:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3303,"nodeType":"ExpressionStatement","src":"3402:31:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3304,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3451:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3305,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"3461:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3451:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3310,"nodeType":"IfStatement","src":"3447:53:27","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3307,"name":"InsufficientAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"3483:15:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3483:17:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3309,"nodeType":"RevertStatement","src":"3476:24:27"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3311,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3518:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3528:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3518:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3320,"nodeType":"IfStatement","src":"3514:51:27","trueBody":{"expression":{"arguments":[{"id":3317,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"3557:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3314,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3284,"src":"3531:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3541:15:27","memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":9117,"src":"3531:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$bound_to$_t_address_$","typeString":"function (address,uint256)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3531:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3319,"nodeType":"ExpressionStatement","src":"3531:34:27"}}]}}]},"documentation":{"id":3280,"nodeType":"StructuredDocumentation","src":"2980:259:27","text":"@notice Sweeps all of the contract's ERC20 or AMB to an address\n @param token The token to sweep (can be AMB using Constants.AMB)\n @param recipient The address that will receive payment\n @param amountMinimum The minimum desired amount"},"id":3356,"implemented":true,"kind":"function","modifiers":[],"name":"sweep","nameLocation":"3253:5:27","nodeType":"FunctionDefinition","parameters":{"id":3287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3282,"mutability":"mutable","name":"token","nameLocation":"3267:5:27","nodeType":"VariableDeclaration","scope":3356,"src":"3259:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3281,"name":"address","nodeType":"ElementaryTypeName","src":"3259:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3284,"mutability":"mutable","name":"recipient","nameLocation":"3282:9:27","nodeType":"VariableDeclaration","scope":3356,"src":"3274:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3283,"name":"address","nodeType":"ElementaryTypeName","src":"3274:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3286,"mutability":"mutable","name":"amountMinimum","nameLocation":"3301:13:27","nodeType":"VariableDeclaration","scope":3356,"src":"3293:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3285,"name":"uint256","nodeType":"ElementaryTypeName","src":"3293:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3258:57:27"},"returnParameters":{"id":3288,"nodeType":"ParameterList","parameters":[],"src":"3325:0:27"},"scope":3544,"src":"3244:561:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3378,"nodeType":"Block","src":"4111:77:27","statements":[{"expression":{"arguments":[{"arguments":[{"id":3372,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4160:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4152:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3370,"name":"address","nodeType":"ElementaryTypeName","src":"4152:7:27","typeDescriptions":{}}},"id":3373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4152:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3374,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"4167:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3375,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3363,"src":"4178:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3367,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3359,"src":"4128:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3366,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"4121:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$9075_$","typeString":"type(contract ERC721)"}},"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4121:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$9075","typeString":"contract ERC721"}},"id":3369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4135:16:27","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8832,"src":"4121:30:27","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4121:60:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3377,"nodeType":"ExpressionStatement","src":"4121:60:27"}]},"documentation":{"id":3357,"nodeType":"StructuredDocumentation","src":"3811:219:27","text":"@notice Sweeps an ERC721 to a recipient from the contract\n @param token The ERC721 token to sweep\n @param recipient The address that will receive payment\n @param id The ID of the ERC721 to sweep"},"id":3379,"implemented":true,"kind":"function","modifiers":[],"name":"sweepERC721","nameLocation":"4044:11:27","nodeType":"FunctionDefinition","parameters":{"id":3364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3359,"mutability":"mutable","name":"token","nameLocation":"4064:5:27","nodeType":"VariableDeclaration","scope":3379,"src":"4056:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3358,"name":"address","nodeType":"ElementaryTypeName","src":"4056:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3361,"mutability":"mutable","name":"recipient","nameLocation":"4079:9:27","nodeType":"VariableDeclaration","scope":3379,"src":"4071:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3360,"name":"address","nodeType":"ElementaryTypeName","src":"4071:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3363,"mutability":"mutable","name":"id","nameLocation":"4098:2:27","nodeType":"VariableDeclaration","scope":3379,"src":"4090:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3362,"name":"uint256","nodeType":"ElementaryTypeName","src":"4090:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4055:46:27"},"returnParameters":{"id":3365,"nodeType":"ParameterList","parameters":[],"src":"4111:0:27"},"scope":3544,"src":"4035:153:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3428,"nodeType":"Block","src":"4577:234:27","statements":[{"assignments":[3392],"declarations":[{"constant":false,"id":3392,"mutability":"mutable","name":"balance","nameLocation":"4595:7:27","nodeType":"VariableDeclaration","scope":3428,"src":"4587:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3391,"name":"uint256","nodeType":"ElementaryTypeName","src":"4587:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3403,"initialValue":{"arguments":[{"arguments":[{"id":3399,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4638:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4630:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3397,"name":"address","nodeType":"ElementaryTypeName","src":"4630:7:27","typeDescriptions":{}}},"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4630:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3401,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4645:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3394,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"4613:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3393,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"4605:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155_$8099_$","typeString":"type(contract ERC1155)"}},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4605:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155_$8099","typeString":"contract ERC1155"}},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4620:9:27","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":7513,"src":"4605:24:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4605:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4587:61:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3404,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"4662:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3405,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3388,"src":"4672:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4662:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3410,"nodeType":"IfStatement","src":"4658:55:27","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3407,"name":"InsufficientToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"4694:17:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4694:19:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3409,"nodeType":"RevertStatement","src":"4687:26:27"}},{"expression":{"arguments":[{"arguments":[{"id":3417,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4763:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4755:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3415,"name":"address","nodeType":"ElementaryTypeName","src":"4755:7:27","typeDescriptions":{}}},"id":3418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4755:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3419,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"4770:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3420,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4781:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3421,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"4785:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"","id":3424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4800:2:27","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":3423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4794:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3422,"name":"bytes","nodeType":"ElementaryTypeName","src":"4794:5:27","typeDescriptions":{}}},"id":3425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4794:9:27","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"}],"expression":{"arguments":[{"id":3412,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"4731:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3411,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"4723:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155_$8099_$","typeString":"type(contract ERC1155)"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4723:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155_$8099","typeString":"contract ERC1155"}},"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4738:16:27","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7635,"src":"4723:31:27","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint256,bytes memory) external"}},"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4723:81:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3427,"nodeType":"ExpressionStatement","src":"4723:81:27"}]},"documentation":{"id":3380,"nodeType":"StructuredDocumentation","src":"4194:278:27","text":"@notice Sweeps all of the contract's ERC1155 to an address\n @param token The ERC1155 token to sweep\n @param recipient The address that will receive payment\n @param id The ID of the ERC1155 to sweep\n @param amountMinimum The minimum desired amount"},"id":3429,"implemented":true,"kind":"function","modifiers":[],"name":"sweepERC1155","nameLocation":"4486:12:27","nodeType":"FunctionDefinition","parameters":{"id":3389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3382,"mutability":"mutable","name":"token","nameLocation":"4507:5:27","nodeType":"VariableDeclaration","scope":3429,"src":"4499:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3381,"name":"address","nodeType":"ElementaryTypeName","src":"4499:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3384,"mutability":"mutable","name":"recipient","nameLocation":"4522:9:27","nodeType":"VariableDeclaration","scope":3429,"src":"4514:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3383,"name":"address","nodeType":"ElementaryTypeName","src":"4514:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3386,"mutability":"mutable","name":"id","nameLocation":"4541:2:27","nodeType":"VariableDeclaration","scope":3429,"src":"4533:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3385,"name":"uint256","nodeType":"ElementaryTypeName","src":"4533:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3388,"mutability":"mutable","name":"amountMinimum","nameLocation":"4553:13:27","nodeType":"VariableDeclaration","scope":3429,"src":"4545:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3387,"name":"uint256","nodeType":"ElementaryTypeName","src":"4545:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4498:69:27"},"returnParameters":{"id":3390,"nodeType":"ParameterList","parameters":[],"src":"4577:0:27"},"scope":3544,"src":"4477:334:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3490,"nodeType":"Block","src":"5045:393:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3437,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5059:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3438,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"5069:9:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5079:16:27","memberName":"CONTRACT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":3015,"src":"5069:26:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5059:36:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3450,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5162:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3453,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5179:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5171:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3451,"name":"address","nodeType":"ElementaryTypeName","src":"5171:7:27","typeDescriptions":{}}},"id":3454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5171:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5185:7:27","memberName":"balance","nodeType":"MemberAccess","src":"5171:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5162:30:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3461,"nodeType":"IfStatement","src":"5158:85:27","trueBody":{"id":3460,"nodeType":"Block","src":"5194:49:27","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3457,"name":"InsufficientAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"5215:15:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5215:17:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3459,"nodeType":"RevertStatement","src":"5208:24:27"}]}},"id":3462,"nodeType":"IfStatement","src":"5055:188:27","trueBody":{"id":3449,"nodeType":"Block","src":"5097:55:27","statements":[{"expression":{"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3441,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5111:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":3444,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5128:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5120:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3442,"name":"address","nodeType":"ElementaryTypeName","src":"5120:7:27","typeDescriptions":{}}},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5120:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5134:7:27","memberName":"balance","nodeType":"MemberAccess","src":"5120:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5111:30:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3448,"nodeType":"ExpressionStatement","src":"5111:30:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3463,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5256:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5265:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5256:10:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3489,"nodeType":"IfStatement","src":"5252:180:27","trueBody":{"id":3488,"nodeType":"Block","src":"5268:164:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"id":3466,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"5282:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"id":3468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5287:7:27","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2884,"src":"5282:12:27","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":3470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":3469,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5302:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5282:27:27","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:29:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3472,"nodeType":"ExpressionStatement","src":"5282:29:27"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3473,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"5329:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":3476,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5350:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5342:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3474,"name":"address","nodeType":"ElementaryTypeName","src":"5342:7:27","typeDescriptions":{}}},"id":3477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5342:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5329:26:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3487,"nodeType":"IfStatement","src":"5325:97:27","trueBody":{"id":3486,"nodeType":"Block","src":"5357:65:27","statements":[{"expression":{"arguments":[{"id":3482,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"5389:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3483,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5400:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3479,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"5375:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5380:8:27","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":859,"src":"5375:13:27","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3485,"nodeType":"ExpressionStatement","src":"5375:32:27"}]}}]}}]},"documentation":{"id":3430,"nodeType":"StructuredDocumentation","src":"4817:162:27","text":"@notice Wraps an amount of AMB into SAMB\n @param recipient The recipient of the SAMB\n @param amount The amount to wrap (can be CONTRACT_BALANCE)"},"id":3491,"implemented":true,"kind":"function","modifiers":[],"name":"wrapAMB","nameLocation":"4993:7:27","nodeType":"FunctionDefinition","parameters":{"id":3435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3432,"mutability":"mutable","name":"recipient","nameLocation":"5009:9:27","nodeType":"VariableDeclaration","scope":3491,"src":"5001:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3431,"name":"address","nodeType":"ElementaryTypeName","src":"5001:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3434,"mutability":"mutable","name":"amount","nameLocation":"5028:6:27","nodeType":"VariableDeclaration","scope":3491,"src":"5020:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3433,"name":"uint256","nodeType":"ElementaryTypeName","src":"5020:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5000:35:27"},"returnParameters":{"id":3436,"nodeType":"ParameterList","parameters":[],"src":"5045:0:27"},"scope":3544,"src":"4984:454:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3542,"nodeType":"Block","src":"5688:326:27","statements":[{"assignments":[3500],"declarations":[{"constant":false,"id":3500,"mutability":"mutable","name":"value","nameLocation":"5706:5:27","nodeType":"VariableDeclaration","scope":3542,"src":"5698:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3499,"name":"uint256","nodeType":"ElementaryTypeName","src":"5698:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3508,"initialValue":{"arguments":[{"arguments":[{"id":3505,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5737:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5729:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3503,"name":"address","nodeType":"ElementaryTypeName","src":"5729:7:27","typeDescriptions":{}}},"id":3506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5729:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3501,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"5714:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"id":3502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5719:9:27","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":849,"src":"5714:14:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5714:29:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5698:45:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3509,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"5757:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3510,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"5765:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5757:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3516,"nodeType":"IfStatement","src":"5753:76:27","trueBody":{"id":3515,"nodeType":"Block","src":"5780:49:27","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3512,"name":"InsufficientAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"5801:15:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:17:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3514,"nodeType":"RevertStatement","src":"5794:24:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"5842:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5850:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5842:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3541,"nodeType":"IfStatement","src":"5838:170:27","trueBody":{"id":3540,"nodeType":"Block","src":"5853:155:27","statements":[{"expression":{"arguments":[{"id":3523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"5881:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3520,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"5867:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$2891","typeString":"contract ISAMB"}},"id":3522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5872:8:27","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2890,"src":"5867:13:27","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":3524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5867:20:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3525,"nodeType":"ExpressionStatement","src":"5867:20:27"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3526,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"5905:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":3529,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5926:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payments_$3544","typeString":"contract Payments"}],"id":3528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5918:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3527,"name":"address","nodeType":"ElementaryTypeName","src":"5918:7:27","typeDescriptions":{}}},"id":3530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5918:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5905:26:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3539,"nodeType":"IfStatement","src":"5901:97:27","trueBody":{"id":3538,"nodeType":"Block","src":"5933:65:27","statements":[{"expression":{"arguments":[{"id":3535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"5977:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3532,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"5951:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:15:27","memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":9117,"src":"5951:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$bound_to$_t_address_$","typeString":"function (address,uint256)"}},"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5951:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3537,"nodeType":"ExpressionStatement","src":"5951:32:27"}]}}]}}]},"documentation":{"id":3492,"nodeType":"StructuredDocumentation","src":"5444:168:27","text":"@notice Unwraps all of the contract's SAMB into AMB\n @param recipient The recipient of the AMB\n @param amountMinimum The minimum amount of AMB desired"},"id":3543,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapSAMB","nameLocation":"5626:10:27","nodeType":"FunctionDefinition","parameters":{"id":3497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3494,"mutability":"mutable","name":"recipient","nameLocation":"5645:9:27","nodeType":"VariableDeclaration","scope":3543,"src":"5637:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3493,"name":"address","nodeType":"ElementaryTypeName","src":"5637:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3496,"mutability":"mutable","name":"amountMinimum","nameLocation":"5664:13:27","nodeType":"VariableDeclaration","scope":3543,"src":"5656:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3495,"name":"uint256","nodeType":"ElementaryTypeName","src":"5656:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5636:42:27"},"returnParameters":{"id":3498,"nodeType":"ParameterList","parameters":[],"src":"5688:0:27"},"scope":3544,"src":"5617:397:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3545,"src":"528:5488:27","usedErrors":[3093,3095,3097,3099]}],"src":"45:5972:27"},"id":27},"contracts/modules/Permit2Payments.sol":{"ast":{"absolutePath":"contracts/modules/Permit2Payments.sol","exportedSymbols":{"Constants":[3067],"IAllowanceTransfer":[6600],"Payments":[3544],"Permit2Payments":[3666],"RouterImmutables":[2788],"SafeCast160":[7295]},"id":3667,"nodeType":"SourceUnit","nodes":[{"id":3546,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"0:24:28"},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"permit2/src/interfaces/IAllowanceTransfer.sol","id":3548,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3667,"sourceUnit":6601,"src":"26:81:28","symbolAliases":[{"foreign":{"id":3547,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"34:18:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/libraries/SafeCast160.sol","file":"permit2/src/libraries/SafeCast160.sol","id":3550,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3667,"sourceUnit":7296,"src":"108:66:28","symbolAliases":[{"foreign":{"id":3549,"name":"SafeCast160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7295,"src":"116:11:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/Payments.sol","file":"./Payments.sol","id":3552,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3667,"sourceUnit":3545,"src":"175:40:28","symbolAliases":[{"foreign":{"id":3551,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"183:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/Constants.sol","file":"../libraries/Constants.sol","id":3554,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3667,"sourceUnit":3068,"src":"216:53:28","symbolAliases":[{"foreign":{"id":3553,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"224:9:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RouterImmutables.sol","file":"../base/RouterImmutables.sol","id":3556,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3667,"sourceUnit":2789,"src":"270:62:28","symbolAliases":[{"foreign":{"id":3555,"name":"RouterImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"278:16:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3558,"name":"Payments","nameLocations":["473:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":3544,"src":"473:8:28"},"id":3559,"nodeType":"InheritanceSpecifier","src":"473:8:28"}],"canonicalName":"Permit2Payments","contractDependencies":[],"contractKind":"contract","documentation":{"id":3557,"nodeType":"StructuredDocumentation","src":"334:102:28","text":"@title Payments through Permit2\n @notice Performs interactions with Permit2 to transfer tokens"},"fullyImplemented":false,"id":3666,"linearizedBaseContracts":[3666,3544,2788],"name":"Permit2Payments","nameLocation":"454:15:28","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3562,"libraryName":{"id":3560,"name":"SafeCast160","nameLocations":["494:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":7295,"src":"494:11:28"},"nodeType":"UsingForDirective","src":"488:30:28","typeName":{"id":3561,"name":"uint256","nodeType":"ElementaryTypeName","src":"510:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"errorSelector":"e7002877","id":3564,"name":"FromAddressIsNotOwner","nameLocation":"530:21:28","nodeType":"ErrorDefinition","parameters":{"id":3563,"nodeType":"ParameterList","parameters":[],"src":"551:2:28"},"src":"524:30:28"},{"body":{"id":3585,"nodeType":"Block","src":"891:62:28","statements":[{"expression":{"arguments":[{"id":3579,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3569,"src":"922:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3580,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3571,"src":"928:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3581,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3573,"src":"932:6:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":3582,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"940:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3576,"name":"PERMIT2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"901:7:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"909:12:28","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6573,"src":"901:20:28","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address) external"}},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"901:45:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3584,"nodeType":"ExpressionStatement","src":"901:45:28"}]},"documentation":{"id":3565,"nodeType":"StructuredDocumentation","src":"560:231:28","text":"@notice Performs a transferFrom on Permit2\n @param token The token to transfer\n @param from The address to transfer from\n @param to The recipient of the transfer\n @param amount The amount to transfer"},"id":3586,"implemented":true,"kind":"function","modifiers":[],"name":"permit2TransferFrom","nameLocation":"805:19:28","nodeType":"FunctionDefinition","parameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3567,"mutability":"mutable","name":"token","nameLocation":"833:5:28","nodeType":"VariableDeclaration","scope":3586,"src":"825:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3566,"name":"address","nodeType":"ElementaryTypeName","src":"825:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3569,"mutability":"mutable","name":"from","nameLocation":"848:4:28","nodeType":"VariableDeclaration","scope":3586,"src":"840:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3568,"name":"address","nodeType":"ElementaryTypeName","src":"840:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3571,"mutability":"mutable","name":"to","nameLocation":"862:2:28","nodeType":"VariableDeclaration","scope":3586,"src":"854:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3570,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3573,"mutability":"mutable","name":"amount","nameLocation":"874:6:28","nodeType":"VariableDeclaration","scope":3586,"src":"866:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3572,"name":"uint160","nodeType":"ElementaryTypeName","src":"866:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"824:57:28"},"returnParameters":{"id":3575,"nodeType":"ParameterList","parameters":[],"src":"891:0:28"},"scope":3666,"src":"796:157:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3629,"nodeType":"Block","src":"1235:243:28","statements":[{"assignments":[3597],"declarations":[{"constant":false,"id":3597,"mutability":"mutable","name":"batchLength","nameLocation":"1253:11:28","nodeType":"VariableDeclaration","scope":3629,"src":"1245:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3596,"name":"uint256","nodeType":"ElementaryTypeName","src":"1245:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3600,"initialValue":{"expression":{"id":3598,"name":"batchDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1267:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory"}},"id":3599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1280:6:28","memberName":"length","nodeType":"MemberAccess","src":"1267:19:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1245:41:28"},{"body":{"id":3621,"nodeType":"Block","src":"1338:90:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3611,"name":"batchDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1356:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory"}},"id":3613,"indexExpression":{"id":3612,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"1369:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1356:15:28","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory"}},"id":3614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1372:4:28","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":6504,"src":"1356:20:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3615,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"1380:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1356:29:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3620,"nodeType":"IfStatement","src":"1352:65:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3617,"name":"FromAddressIsNotOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"1394:21:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1394:23:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3619,"nodeType":"RevertStatement","src":"1387:30:28"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3605,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"1316:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3606,"name":"batchLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"1320:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1316:15:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3622,"initializationExpression":{"assignments":[3602],"declarations":[{"constant":false,"id":3602,"mutability":"mutable","name":"i","nameLocation":"1309:1:28","nodeType":"VariableDeclaration","scope":3622,"src":"1301:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3601,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3604,"initialValue":{"hexValue":"30","id":3603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1313:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1301:13:28"},"loopExpression":{"expression":{"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1333:3:28","subExpression":{"id":3608,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"1335:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3610,"nodeType":"ExpressionStatement","src":"1333:3:28"},"nodeType":"ForStatement","src":"1296:132:28"},{"expression":{"arguments":[{"id":3626,"name":"batchDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1458:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory"}],"expression":{"id":3623,"name":"PERMIT2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"1437:7:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAllowanceTransfer_$6600","typeString":"contract IAllowanceTransfer"}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1445:12:28","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6581,"src":"1437:20:28","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IAllowanceTransfer.AllowanceTransferDetails memory[] memory) external"}},"id":3627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1437:34:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3628,"nodeType":"ExpressionStatement","src":"1437:34:28"}]},"documentation":{"id":3587,"nodeType":"StructuredDocumentation","src":"959:139:28","text":"@notice Performs a batch transferFrom on Permit2\n @param batchDetails An array detailing each of the transfers that should occur"},"id":3630,"implemented":true,"kind":"function","modifiers":[],"name":"permit2TransferFrom","nameLocation":"1112:19:28","nodeType":"FunctionDefinition","parameters":{"id":3594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3591,"mutability":"mutable","name":"batchDetails","nameLocation":"1185:12:28","nodeType":"VariableDeclaration","scope":3630,"src":"1132:65:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"},"typeName":{"baseType":{"id":3589,"nodeType":"UserDefinedTypeName","pathNode":{"id":3588,"name":"IAllowanceTransfer.AllowanceTransferDetails","nameLocations":["1132:18:28","1151:24:28"],"nodeType":"IdentifierPath","referencedDeclaration":6511,"src":"1132:43:28"},"referencedDeclaration":6511,"src":"1132:43:28","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails"}},"id":3590,"nodeType":"ArrayTypeName","src":"1132:45:28","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":3593,"mutability":"mutable","name":"owner","nameLocation":"1207:5:28","nodeType":"VariableDeclaration","scope":3630,"src":"1199:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3592,"name":"address","nodeType":"ElementaryTypeName","src":"1199:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1131:82:28"},"returnParameters":{"id":3595,"nodeType":"ParameterList","parameters":[],"src":"1235:0:28"},"scope":3666,"src":"1103:375:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3664,"nodeType":"Block","src":"1897:153:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3642,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3635,"src":"1911:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3645,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1928:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_Permit2Payments_$3666","typeString":"contract Permit2Payments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Permit2Payments_$3666","typeString":"contract Permit2Payments"}],"id":3644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1920:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3643,"name":"address","nodeType":"ElementaryTypeName","src":"1920:7:28","typeDescriptions":{}}},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1920:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1911:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"id":3655,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"1999:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3656,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3635,"src":"2006:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3657,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"2013:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3658,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"2024:6:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2031:9:28","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":7294,"src":"2024:16:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2024:18:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3654,"name":"permit2TransferFrom","nodeType":"Identifier","overloadedDeclarations":[3586,3630],"referencedDeclaration":3586,"src":"1979:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint160_$returns$__$","typeString":"function (address,address,address,uint160)"}},"id":3661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1979:64:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3662,"nodeType":"ExpressionStatement","src":"1979:64:28"},"id":3663,"nodeType":"IfStatement","src":"1907:136:28","trueBody":{"expression":{"arguments":[{"id":3649,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"1939:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3650,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"1946:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3651,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1957:6:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3648,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"1935:3:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1935:29:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3653,"nodeType":"ExpressionStatement","src":"1935:29:28"}}]},"documentation":{"id":3631,"nodeType":"StructuredDocumentation","src":"1484:304:28","text":"@notice Either performs a regular payment or transferFrom on Permit2, depending on the payer address\n @param token The token to transfer\n @param payer The address to pay for the transfer\n @param recipient The recipient of the transfer\n @param amount The amount to transfer"},"id":3665,"implemented":true,"kind":"function","modifiers":[],"name":"payOrPermit2Transfer","nameLocation":"1802:20:28","nodeType":"FunctionDefinition","parameters":{"id":3640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3633,"mutability":"mutable","name":"token","nameLocation":"1831:5:28","nodeType":"VariableDeclaration","scope":3665,"src":"1823:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3632,"name":"address","nodeType":"ElementaryTypeName","src":"1823:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3635,"mutability":"mutable","name":"payer","nameLocation":"1846:5:28","nodeType":"VariableDeclaration","scope":3665,"src":"1838:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3634,"name":"address","nodeType":"ElementaryTypeName","src":"1838:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3637,"mutability":"mutable","name":"recipient","nameLocation":"1861:9:28","nodeType":"VariableDeclaration","scope":3665,"src":"1853:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3636,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3639,"mutability":"mutable","name":"amount","nameLocation":"1880:6:28","nodeType":"VariableDeclaration","scope":3665,"src":"1872:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3638,"name":"uint256","nodeType":"ElementaryTypeName","src":"1872:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1822:65:28"},"returnParameters":{"id":3641,"nodeType":"ParameterList","parameters":[],"src":"1897:0:28"},"scope":3666,"src":"1793:257:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3667,"src":"436:1616:28","usedErrors":[3093,3095,3097,3099,3564]}],"src":"0:2053:28"},"id":28},"contracts/modules/astra/cl/BytesLib.sol":{"ast":{"absolutePath":"contracts/modules/astra/cl/BytesLib.sol","exportedSymbols":{"BytesLib":[3807],"Constants":[3067]},"id":3808,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3668,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"88:23:29"},{"absolutePath":"contracts/libraries/Constants.sol","file":"../../../libraries/Constants.sol","id":3670,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3808,"sourceUnit":3068,"src":"113:59:29","symbolAliases":[{"foreign":{"id":3669,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"121:9:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BytesLib","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":3807,"linearizedBaseContracts":[3807],"name":"BytesLib","nameLocation":"182:8:29","nodeType":"ContractDefinition","nodes":[{"errorSelector":"3b99b53d","id":3672,"name":"SliceOutOfBounds","nameLocation":"203:16:29","nodeType":"ErrorDefinition","parameters":{"id":3671,"nodeType":"ParameterList","parameters":[],"src":"219:2:29"},"src":"197:25:29"},{"body":{"id":3690,"nodeType":"Block","src":"551:173:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3680,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"565:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"572:6:29","memberName":"length","nodeType":"MemberAccess","src":"565:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3682,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"581:9:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"591:9:29","memberName":"ADDR_SIZE","nodeType":"MemberAccess","referencedDeclaration":3044,"src":"581:19:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"565:35:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3688,"nodeType":"IfStatement","src":"561:66:29","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3685,"name":"SliceOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"609:16:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"609:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3687,"nodeType":"RevertStatement","src":"602:25:29"}},{"AST":{"nodeType":"YulBlock","src":"646:72:29","statements":[{"nodeType":"YulAssignment","src":"660:48:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"676:2:29","type":"","value":"96"},{"arguments":[{"name":"_bytes.offset","nodeType":"YulIdentifier","src":"693:13:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"680:12:29"},"nodeType":"YulFunctionCall","src":"680:27:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"672:3:29"},"nodeType":"YulFunctionCall","src":"672:36:29"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"660:8:29"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3678,"isOffset":false,"isSlot":false,"src":"660:8:29","valueSize":1},{"declaration":3675,"isOffset":true,"isSlot":false,"src":"693:13:29","suffix":"offset","valueSize":1}],"id":3689,"nodeType":"InlineAssembly","src":"637:81:29"}]},"documentation":{"id":3673,"nodeType":"StructuredDocumentation","src":"228:235:29","text":"@notice Returns the address starting at byte 0\n @dev length and overflow checks must be carried out before calling\n @param _bytes The input bytes string to slice\n @return _address The address starting at byte 0"},"id":3691,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"477:9:29","nodeType":"FunctionDefinition","parameters":{"id":3676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3675,"mutability":"mutable","name":"_bytes","nameLocation":"502:6:29","nodeType":"VariableDeclaration","scope":3691,"src":"487:21:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3674,"name":"bytes","nodeType":"ElementaryTypeName","src":"487:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"486:23:29"},"returnParameters":{"id":3679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3678,"mutability":"mutable","name":"_address","nameLocation":"541:8:29","nodeType":"VariableDeclaration","scope":3691,"src":"533:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3677,"name":"address","nodeType":"ElementaryTypeName","src":"533:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"532:18:29"},"scope":3807,"src":"468:256:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3713,"nodeType":"Block","src":"1167:335:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3703,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"1181:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1188:6:29","memberName":"length","nodeType":"MemberAccess","src":"1181:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3705,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"1197:9:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1207:13:29","memberName":"CL_POP_OFFSET","nodeType":"MemberAccess","referencedDeclaration":3060,"src":"1197:23:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1181:39:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3711,"nodeType":"IfStatement","src":"1177:70:29","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3708,"name":"SliceOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"1229:16:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1229:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3710,"nodeType":"RevertStatement","src":"1222:25:29"}},{"AST":{"nodeType":"YulBlock","src":"1266:230:29","statements":[{"nodeType":"YulVariableDeclaration","src":"1280:44:29","value":{"arguments":[{"name":"_bytes.offset","nodeType":"YulIdentifier","src":"1310:13:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1297:12:29"},"nodeType":"YulFunctionCall","src":"1297:27:29"},"variables":[{"name":"firstWord","nodeType":"YulTypedName","src":"1284:9:29","type":""}]},{"nodeType":"YulAssignment","src":"1337:28:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1351:2:29","type":"","value":"96"},{"name":"firstWord","nodeType":"YulIdentifier","src":"1355:9:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1347:3:29"},"nodeType":"YulFunctionCall","src":"1347:18:29"},"variableNames":[{"name":"token0","nodeType":"YulIdentifier","src":"1337:6:29"}]},{"nodeType":"YulAssignment","src":"1378:40:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1393:2:29","type":"","value":"72"},{"name":"firstWord","nodeType":"YulIdentifier","src":"1397:9:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1389:3:29"},"nodeType":"YulFunctionCall","src":"1389:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"1409:8:29","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1385:3:29"},"nodeType":"YulFunctionCall","src":"1385:33:29"},"variableNames":[{"name":"fee","nodeType":"YulIdentifier","src":"1378:3:29"}]},{"nodeType":"YulAssignment","src":"1431:55:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1445:2:29","type":"","value":"96"},{"arguments":[{"arguments":[{"name":"_bytes.offset","nodeType":"YulIdentifier","src":"1466:13:29"},{"kind":"number","nodeType":"YulLiteral","src":"1481:2:29","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1462:3:29"},"nodeType":"YulFunctionCall","src":"1462:22:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1449:12:29"},"nodeType":"YulFunctionCall","src":"1449:36:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1441:3:29"},"nodeType":"YulFunctionCall","src":"1441:45:29"},"variableNames":[{"name":"token1","nodeType":"YulIdentifier","src":"1431:6:29"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3694,"isOffset":true,"isSlot":false,"src":"1310:13:29","suffix":"offset","valueSize":1},{"declaration":3694,"isOffset":true,"isSlot":false,"src":"1466:13:29","suffix":"offset","valueSize":1},{"declaration":3699,"isOffset":false,"isSlot":false,"src":"1378:3:29","valueSize":1},{"declaration":3697,"isOffset":false,"isSlot":false,"src":"1337:6:29","valueSize":1},{"declaration":3701,"isOffset":false,"isSlot":false,"src":"1431:6:29","valueSize":1}],"id":3712,"nodeType":"InlineAssembly","src":"1257:239:29"}]},"documentation":{"id":3692,"nodeType":"StructuredDocumentation","src":"730:326:29","text":"@notice Returns the pool details starting at byte 0\n @dev length and overflow checks must be carried out before calling\n @param _bytes The input bytes string to slice\n @return token0 The address at byte 0\n @return fee The uint24 starting at byte 20\n @return token1 The address at byte 23"},"id":3714,"implemented":true,"kind":"function","modifiers":[],"name":"toPool","nameLocation":"1070:6:29","nodeType":"FunctionDefinition","parameters":{"id":3695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3694,"mutability":"mutable","name":"_bytes","nameLocation":"1092:6:29","nodeType":"VariableDeclaration","scope":3714,"src":"1077:21:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3693,"name":"bytes","nodeType":"ElementaryTypeName","src":"1077:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1076:23:29"},"returnParameters":{"id":3702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3697,"mutability":"mutable","name":"token0","nameLocation":"1131:6:29","nodeType":"VariableDeclaration","scope":3714,"src":"1123:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3696,"name":"address","nodeType":"ElementaryTypeName","src":"1123:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3699,"mutability":"mutable","name":"fee","nameLocation":"1146:3:29","nodeType":"VariableDeclaration","scope":3714,"src":"1139:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3698,"name":"uint24","nodeType":"ElementaryTypeName","src":"1139:6:29","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3701,"mutability":"mutable","name":"token1","nameLocation":"1159:6:29","nodeType":"VariableDeclaration","scope":3714,"src":"1151:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3700,"name":"address","nodeType":"ElementaryTypeName","src":"1151:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1122:44:29"},"scope":3807,"src":"1061:441:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3740,"nodeType":"Block","src":"2093:556:29","statements":[{"assignments":[3727],"declarations":[{"constant":false,"id":3727,"mutability":"mutable","name":"relativeOffset","nameLocation":"2111:14:29","nodeType":"VariableDeclaration","scope":3740,"src":"2103:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3726,"name":"uint256","nodeType":"ElementaryTypeName","src":"2103:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3728,"nodeType":"VariableDeclarationStatement","src":"2103:22:29"},{"AST":{"nodeType":"YulBlock","src":"2144:419:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2324:83:29","value":{"arguments":[{"name":"_bytes.offset","nodeType":"YulIdentifier","src":"2345:13:29"},{"arguments":[{"arguments":[{"name":"_bytes.offset","nodeType":"YulIdentifier","src":"2377:13:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2396:1:29","type":"","value":"5"},{"name":"_arg","nodeType":"YulIdentifier","src":"2399:4:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2392:3:29"},"nodeType":"YulFunctionCall","src":"2392:12:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2373:3:29"},"nodeType":"YulFunctionCall","src":"2373:32:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2360:12:29"},"nodeType":"YulFunctionCall","src":"2360:46:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2341:3:29"},"nodeType":"YulFunctionCall","src":"2341:66:29"},"variables":[{"name":"lengthPtr","nodeType":"YulTypedName","src":"2328:9:29","type":""}]},{"nodeType":"YulAssignment","src":"2420:33:29","value":{"arguments":[{"name":"lengthPtr","nodeType":"YulIdentifier","src":"2443:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2430:12:29"},"nodeType":"YulFunctionCall","src":"2430:23:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2420:6:29"}]},{"nodeType":"YulAssignment","src":"2466:30:29","value":{"arguments":[{"name":"lengthPtr","nodeType":"YulIdentifier","src":"2480:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2491:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2476:3:29"},"nodeType":"YulFunctionCall","src":"2476:20:29"},"variableNames":[{"name":"offset","nodeType":"YulIdentifier","src":"2466:6:29"}]},{"nodeType":"YulAssignment","src":"2509:44:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2531:6:29"},{"name":"_bytes.offset","nodeType":"YulIdentifier","src":"2539:13:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2527:3:29"},"nodeType":"YulFunctionCall","src":"2527:26:29"},"variableNames":[{"name":"relativeOffset","nodeType":"YulIdentifier","src":"2509:14:29"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3719,"isOffset":false,"isSlot":false,"src":"2399:4:29","valueSize":1},{"declaration":3717,"isOffset":true,"isSlot":false,"src":"2345:13:29","suffix":"offset","valueSize":1},{"declaration":3717,"isOffset":true,"isSlot":false,"src":"2377:13:29","suffix":"offset","valueSize":1},{"declaration":3717,"isOffset":true,"isSlot":false,"src":"2539:13:29","suffix":"offset","valueSize":1},{"declaration":3722,"isOffset":false,"isSlot":false,"src":"2420:6:29","valueSize":1},{"declaration":3724,"isOffset":false,"isSlot":false,"src":"2466:6:29","valueSize":1},{"declaration":3724,"isOffset":false,"isSlot":false,"src":"2531:6:29","valueSize":1},{"declaration":3727,"isOffset":false,"isSlot":false,"src":"2509:14:29","valueSize":1}],"id":3729,"nodeType":"InlineAssembly","src":"2135:428:29"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3730,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"2576:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2583:6:29","memberName":"length","nodeType":"MemberAccess","src":"2576:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3732,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"2592:6:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3733,"name":"relativeOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3727,"src":"2601:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2592:23:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2576:39:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3739,"nodeType":"IfStatement","src":"2572:70:29","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3736,"name":"SliceOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"2624:16:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2624:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3738,"nodeType":"RevertStatement","src":"2617:25:29"}}]},"documentation":{"id":3715,"nodeType":"StructuredDocumentation","src":"1508:436:29","text":"@notice Decode the `_arg`-th element in `_bytes` as a dynamic array\n @dev The decoding of `length` and `offset` is universal,\n whereas the type declaration of `res` instructs the compiler how to read it.\n @param _bytes The input bytes string to slice\n @param _arg The index of the argument to extract\n @return length Length of the array\n @return offset Pointer to the data part of the array"},"id":3741,"implemented":true,"kind":"function","modifiers":[],"name":"toLengthOffset","nameLocation":"1958:14:29","nodeType":"FunctionDefinition","parameters":{"id":3720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3717,"mutability":"mutable","name":"_bytes","nameLocation":"1988:6:29","nodeType":"VariableDeclaration","scope":3741,"src":"1973:21:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3716,"name":"bytes","nodeType":"ElementaryTypeName","src":"1973:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3719,"mutability":"mutable","name":"_arg","nameLocation":"2004:4:29","nodeType":"VariableDeclaration","scope":3741,"src":"1996:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3718,"name":"uint256","nodeType":"ElementaryTypeName","src":"1996:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1972:37:29"},"returnParameters":{"id":3725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3722,"mutability":"mutable","name":"length","nameLocation":"2065:6:29","nodeType":"VariableDeclaration","scope":3741,"src":"2057:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3721,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3724,"mutability":"mutable","name":"offset","nameLocation":"2081:6:29","nodeType":"VariableDeclaration","scope":3741,"src":"2073:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3723,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2056:32:29"},"scope":3807,"src":"1949:700:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3761,"nodeType":"Block","src":"2953:175:29","statements":[{"assignments":[3752,3754],"declarations":[{"constant":false,"id":3752,"mutability":"mutable","name":"length","nameLocation":"2972:6:29","nodeType":"VariableDeclaration","scope":3761,"src":"2964:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3751,"name":"uint256","nodeType":"ElementaryTypeName","src":"2964:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3754,"mutability":"mutable","name":"offset","nameLocation":"2988:6:29","nodeType":"VariableDeclaration","scope":3761,"src":"2980:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3753,"name":"uint256","nodeType":"ElementaryTypeName","src":"2980:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3759,"initialValue":{"arguments":[{"id":3756,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3744,"src":"3013:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":3757,"name":"_arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3746,"src":"3021:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3755,"name":"toLengthOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"2998:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":3758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2998:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2963:63:29"},{"AST":{"nodeType":"YulBlock","src":"3045:77:29","statements":[{"nodeType":"YulAssignment","src":"3059:20:29","value":{"name":"length","nodeType":"YulIdentifier","src":"3073:6:29"},"variableNames":[{"name":"res.length","nodeType":"YulIdentifier","src":"3059:10:29"}]},{"nodeType":"YulAssignment","src":"3092:20:29","value":{"name":"offset","nodeType":"YulIdentifier","src":"3106:6:29"},"variableNames":[{"name":"res.offset","nodeType":"YulIdentifier","src":"3092:10:29"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3752,"isOffset":false,"isSlot":false,"src":"3073:6:29","valueSize":1},{"declaration":3754,"isOffset":false,"isSlot":false,"src":"3106:6:29","valueSize":1},{"declaration":3749,"isOffset":false,"isSlot":false,"src":"3059:10:29","suffix":"length","valueSize":1},{"declaration":3749,"isOffset":true,"isSlot":false,"src":"3092:10:29","suffix":"offset","valueSize":1}],"id":3760,"nodeType":"InlineAssembly","src":"3036:86:29"}]},"documentation":{"id":3742,"nodeType":"StructuredDocumentation","src":"2655:196:29","text":"@notice Decode the `_arg`-th element in `_bytes` as `bytes`\n @param _bytes The input bytes string to extract a bytes string from\n @param _arg The index of the argument to extract"},"id":3762,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes","nameLocation":"2865:7:29","nodeType":"FunctionDefinition","parameters":{"id":3747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3744,"mutability":"mutable","name":"_bytes","nameLocation":"2888:6:29","nodeType":"VariableDeclaration","scope":3762,"src":"2873:21:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3743,"name":"bytes","nodeType":"ElementaryTypeName","src":"2873:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3746,"mutability":"mutable","name":"_arg","nameLocation":"2904:4:29","nodeType":"VariableDeclaration","scope":3762,"src":"2896:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3745,"name":"uint256","nodeType":"ElementaryTypeName","src":"2896:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2872:37:29"},"returnParameters":{"id":3750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3749,"mutability":"mutable","name":"res","nameLocation":"2948:3:29","nodeType":"VariableDeclaration","scope":3762,"src":"2933:18:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3748,"name":"bytes","nodeType":"ElementaryTypeName","src":"2933:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2932:20:29"},"scope":3807,"src":"2856:272:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3783,"nodeType":"Block","src":"3449:175:29","statements":[{"assignments":[3774,3776],"declarations":[{"constant":false,"id":3774,"mutability":"mutable","name":"length","nameLocation":"3468:6:29","nodeType":"VariableDeclaration","scope":3783,"src":"3460:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3773,"name":"uint256","nodeType":"ElementaryTypeName","src":"3460:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3776,"mutability":"mutable","name":"offset","nameLocation":"3484:6:29","nodeType":"VariableDeclaration","scope":3783,"src":"3476:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3775,"name":"uint256","nodeType":"ElementaryTypeName","src":"3476:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3781,"initialValue":{"arguments":[{"id":3778,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"3509:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":3779,"name":"_arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3767,"src":"3517:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3777,"name":"toLengthOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"3494:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3494:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3459:63:29"},{"AST":{"nodeType":"YulBlock","src":"3541:77:29","statements":[{"nodeType":"YulAssignment","src":"3555:20:29","value":{"name":"length","nodeType":"YulIdentifier","src":"3569:6:29"},"variableNames":[{"name":"res.length","nodeType":"YulIdentifier","src":"3555:10:29"}]},{"nodeType":"YulAssignment","src":"3588:20:29","value":{"name":"offset","nodeType":"YulIdentifier","src":"3602:6:29"},"variableNames":[{"name":"res.offset","nodeType":"YulIdentifier","src":"3588:10:29"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3774,"isOffset":false,"isSlot":false,"src":"3569:6:29","valueSize":1},{"declaration":3776,"isOffset":false,"isSlot":false,"src":"3602:6:29","valueSize":1},{"declaration":3771,"isOffset":false,"isSlot":false,"src":"3555:10:29","suffix":"length","valueSize":1},{"declaration":3771,"isOffset":true,"isSlot":false,"src":"3588:10:29","suffix":"offset","valueSize":1}],"id":3782,"nodeType":"InlineAssembly","src":"3532:86:29"}]},"documentation":{"id":3763,"nodeType":"StructuredDocumentation","src":"3134:202:29","text":"@notice Decode the `_arg`-th element in `_bytes` as `address[]`\n @param _bytes The input bytes string to extract an address array from\n @param _arg The index of the argument to extract"},"id":3784,"implemented":true,"kind":"function","modifiers":[],"name":"toAddressArray","nameLocation":"3350:14:29","nodeType":"FunctionDefinition","parameters":{"id":3768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3765,"mutability":"mutable","name":"_bytes","nameLocation":"3380:6:29","nodeType":"VariableDeclaration","scope":3784,"src":"3365:21:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3764,"name":"bytes","nodeType":"ElementaryTypeName","src":"3365:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3767,"mutability":"mutable","name":"_arg","nameLocation":"3396:4:29","nodeType":"VariableDeclaration","scope":3784,"src":"3388:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3766,"name":"uint256","nodeType":"ElementaryTypeName","src":"3388:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3364:37:29"},"returnParameters":{"id":3772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3771,"mutability":"mutable","name":"res","nameLocation":"3444:3:29","nodeType":"VariableDeclaration","scope":3784,"src":"3425:22:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3769,"name":"address","nodeType":"ElementaryTypeName","src":"3425:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3770,"nodeType":"ArrayTypeName","src":"3425:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3424:24:29"},"scope":3807,"src":"3341:283:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3805,"nodeType":"Block","src":"3936:175:29","statements":[{"assignments":[3796,3798],"declarations":[{"constant":false,"id":3796,"mutability":"mutable","name":"length","nameLocation":"3955:6:29","nodeType":"VariableDeclaration","scope":3805,"src":"3947:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3795,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3798,"mutability":"mutable","name":"offset","nameLocation":"3971:6:29","nodeType":"VariableDeclaration","scope":3805,"src":"3963:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3797,"name":"uint256","nodeType":"ElementaryTypeName","src":"3963:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3803,"initialValue":{"arguments":[{"id":3800,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"3996:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":3801,"name":"_arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"4004:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3799,"name":"toLengthOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"3981:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":3802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3981:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3946:63:29"},{"AST":{"nodeType":"YulBlock","src":"4028:77:29","statements":[{"nodeType":"YulAssignment","src":"4042:20:29","value":{"name":"length","nodeType":"YulIdentifier","src":"4056:6:29"},"variableNames":[{"name":"res.length","nodeType":"YulIdentifier","src":"4042:10:29"}]},{"nodeType":"YulAssignment","src":"4075:20:29","value":{"name":"offset","nodeType":"YulIdentifier","src":"4089:6:29"},"variableNames":[{"name":"res.offset","nodeType":"YulIdentifier","src":"4075:10:29"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3796,"isOffset":false,"isSlot":false,"src":"4056:6:29","valueSize":1},{"declaration":3798,"isOffset":false,"isSlot":false,"src":"4089:6:29","valueSize":1},{"declaration":3793,"isOffset":false,"isSlot":false,"src":"4042:10:29","suffix":"length","valueSize":1},{"declaration":3793,"isOffset":true,"isSlot":false,"src":"4075:10:29","suffix":"offset","valueSize":1}],"id":3804,"nodeType":"InlineAssembly","src":"4019:86:29"}]},"documentation":{"id":3785,"nodeType":"StructuredDocumentation","src":"3630:197:29","text":"@notice Decode the `_arg`-th element in `_bytes` as `bytes[]`\n @param _bytes The input bytes string to extract a bytes array from\n @param _arg The index of the argument to extract"},"id":3806,"implemented":true,"kind":"function","modifiers":[],"name":"toBytesArray","nameLocation":"3841:12:29","nodeType":"FunctionDefinition","parameters":{"id":3790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3787,"mutability":"mutable","name":"_bytes","nameLocation":"3869:6:29","nodeType":"VariableDeclaration","scope":3806,"src":"3854:21:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3786,"name":"bytes","nodeType":"ElementaryTypeName","src":"3854:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3789,"mutability":"mutable","name":"_arg","nameLocation":"3885:4:29","nodeType":"VariableDeclaration","scope":3806,"src":"3877:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3788,"name":"uint256","nodeType":"ElementaryTypeName","src":"3877:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3853:37:29"},"returnParameters":{"id":3794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3793,"mutability":"mutable","name":"res","nameLocation":"3931:3:29","nodeType":"VariableDeclaration","scope":3806,"src":"3914:20:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":3791,"name":"bytes","nodeType":"ElementaryTypeName","src":"3914:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3792,"nodeType":"ArrayTypeName","src":"3914:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3913:22:29"},"scope":3807,"src":"3832:279:29","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3808,"src":"174:3939:29","usedErrors":[3672]}],"src":"88:4026:29"},"id":29},"contracts/modules/astra/cl/CLPath.sol":{"ast":{"absolutePath":"contracts/modules/astra/cl/CLPath.sol","exportedSymbols":{"BytesLib":[3807],"CLPath":[3892],"Constants":[3067]},"id":3893,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3809,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"45:24:30"},{"absolutePath":"contracts/modules/astra/cl/BytesLib.sol","file":"./BytesLib.sol","id":3811,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3893,"sourceUnit":3808,"src":"71:40:30","symbolAliases":[{"foreign":{"id":3810,"name":"BytesLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"79:8:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/Constants.sol","file":"../../../libraries/Constants.sol","id":3813,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3893,"sourceUnit":3068,"src":"112:59:30","symbolAliases":[{"foreign":{"id":3812,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"120:9:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CLPath","contractDependencies":[],"contractKind":"library","documentation":{"id":3814,"nodeType":"StructuredDocumentation","src":"173:67:30","text":"@title Functions for manipulating path data for multihop swaps"},"fullyImplemented":true,"id":3892,"linearizedBaseContracts":[3892],"name":"CLPath","nameLocation":"248:6:30","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3817,"libraryName":{"id":3815,"name":"BytesLib","nameLocations":["267:8:30"],"nodeType":"IdentifierPath","referencedDeclaration":3807,"src":"267:8:30"},"nodeType":"UsingForDirective","src":"261:25:30","typeName":{"id":3816,"name":"bytes","nodeType":"ElementaryTypeName","src":"280:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"body":{"id":3831,"nodeType":"Block","src":"552:77:30","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3825,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3820,"src":"569:4:30","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"574:6:30","memberName":"length","nodeType":"MemberAccess","src":"569:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3827,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"584:9:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"594:28:30","memberName":"MULTIPLE_CL_POOLS_MIN_LENGTH","nodeType":"MemberAccess","referencedDeclaration":3066,"src":"584:38:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"569:53:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3824,"id":3830,"nodeType":"Return","src":"562:60:30"}]},"documentation":{"id":3818,"nodeType":"StructuredDocumentation","src":"292:179:30","text":"@notice Returns true iff the path contains two or more pools\n @param path The encoded swap path\n @return True if path contains two or more pools, otherwise false"},"id":3832,"implemented":true,"kind":"function","modifiers":[],"name":"hasMultiplePools","nameLocation":"485:16:30","nodeType":"FunctionDefinition","parameters":{"id":3821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3820,"mutability":"mutable","name":"path","nameLocation":"517:4:30","nodeType":"VariableDeclaration","scope":3832,"src":"502:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3819,"name":"bytes","nodeType":"ElementaryTypeName","src":"502:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"501:21:30"},"returnParameters":{"id":3824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3832,"src":"546:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3822,"name":"bool","nodeType":"ElementaryTypeName","src":"546:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"545:6:30"},"scope":3892,"src":"476:153:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3848,"nodeType":"Block","src":"986:37:30","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3844,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"1003:4:30","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1008:6:30","memberName":"toPool","nodeType":"MemberAccess","referencedDeclaration":3714,"src":"1003:11:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$_t_uint24_$_t_address_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address,uint24,address)"}},"id":3846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1003:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint24_$_t_address_$","typeString":"tuple(address,uint24,address)"}},"functionReturnParameters":3843,"id":3847,"nodeType":"Return","src":"996:20:30"}]},"documentation":{"id":3833,"nodeType":"StructuredDocumentation","src":"635:251:30","text":"@notice Decodes the first pool in path\n @param path The bytes encoded swap path\n @return tokenA The first token of the given pool\n @return fee The fee level of the pool\n @return tokenB The second token of the given pool"},"id":3849,"implemented":true,"kind":"function","modifiers":[],"name":"decodeFirstPool","nameLocation":"900:15:30","nodeType":"FunctionDefinition","parameters":{"id":3836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3835,"mutability":"mutable","name":"path","nameLocation":"931:4:30","nodeType":"VariableDeclaration","scope":3849,"src":"916:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3834,"name":"bytes","nodeType":"ElementaryTypeName","src":"916:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"915:21:30"},"returnParameters":{"id":3843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3849,"src":"960:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3837,"name":"address","nodeType":"ElementaryTypeName","src":"960:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3849,"src":"969:6:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3839,"name":"uint24","nodeType":"ElementaryTypeName","src":"969:6:30","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3849,"src":"977:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3841,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"959:26:30"},"scope":3892,"src":"891:132:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3862,"nodeType":"Block","src":"1331:54:30","statements":[{"expression":{"baseExpression":{"id":3857,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"1348:4:30","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"expression":{"id":3858,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"1354:9:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1364:13:30","memberName":"CL_POP_OFFSET","nodeType":"MemberAccess","referencedDeclaration":3060,"src":"1354:23:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1348:30:30","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":3856,"id":3861,"nodeType":"Return","src":"1341:37:30"}]},"documentation":{"id":3850,"nodeType":"StructuredDocumentation","src":"1029:215:30","text":"@notice Gets the segment corresponding to the first pool in the path\n @param path The bytes encoded swap path\n @return The segment containing all data necessary to target the first pool in the path"},"id":3863,"implemented":true,"kind":"function","modifiers":[],"name":"getFirstPool","nameLocation":"1258:12:30","nodeType":"FunctionDefinition","parameters":{"id":3853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3852,"mutability":"mutable","name":"path","nameLocation":"1286:4:30","nodeType":"VariableDeclaration","scope":3863,"src":"1271:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3851,"name":"bytes","nodeType":"ElementaryTypeName","src":"1271:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1270:21:30"},"returnParameters":{"id":3856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3863,"src":"1315:14:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3854,"name":"bytes","nodeType":"ElementaryTypeName","src":"1315:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1314:16:30"},"scope":3892,"src":"1249:136:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3876,"nodeType":"Block","src":"1477:42:30","statements":[{"expression":{"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3870,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3868,"src":"1487:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3871,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"1496:4:30","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1501:9:30","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":3691,"src":"1496:14:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address)"}},"id":3873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1496:16:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1487:25:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3875,"nodeType":"ExpressionStatement","src":"1487:25:30"}]},"id":3877,"implemented":true,"kind":"function","modifiers":[],"name":"decodeFirstToken","nameLocation":"1400:16:30","nodeType":"FunctionDefinition","parameters":{"id":3866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3865,"mutability":"mutable","name":"path","nameLocation":"1432:4:30","nodeType":"VariableDeclaration","scope":3877,"src":"1417:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3864,"name":"bytes","nodeType":"ElementaryTypeName","src":"1417:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1416:21:30"},"returnParameters":{"id":3869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3868,"mutability":"mutable","name":"tokenA","nameLocation":"1469:6:30","nodeType":"VariableDeclaration","scope":3877,"src":"1461:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3867,"name":"address","nodeType":"ElementaryTypeName","src":"1461:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1460:16:30"},"scope":3892,"src":"1391:128:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3890,"nodeType":"Block","src":"1682:60:30","statements":[{"expression":{"baseExpression":{"id":3885,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"1699:4:30","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1699:36:30","startExpression":{"expression":{"id":3886,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"1704:9:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":3887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1714:19:30","memberName":"NEXT_CL_POOL_OFFSET","nodeType":"MemberAccess","referencedDeclaration":3054,"src":"1704:29:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":3884,"id":3889,"nodeType":"Return","src":"1692:43:30"}]},"documentation":{"id":3878,"nodeType":"StructuredDocumentation","src":"1525:73:30","text":"@notice Skips a token + fee element\n @param path The swap path"},"id":3891,"implemented":true,"kind":"function","modifiers":[],"name":"skipToken","nameLocation":"1612:9:30","nodeType":"FunctionDefinition","parameters":{"id":3881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3880,"mutability":"mutable","name":"path","nameLocation":"1637:4:30","nodeType":"VariableDeclaration","scope":3891,"src":"1622:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3879,"name":"bytes","nodeType":"ElementaryTypeName","src":"1622:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1621:21:30"},"returnParameters":{"id":3884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3891,"src":"1666:14:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3882,"name":"bytes","nodeType":"ElementaryTypeName","src":"1666:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1665:16:30"},"scope":3892,"src":"1603:139:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3893,"src":"240:1504:30","usedErrors":[]}],"src":"45:1700:30"},"id":30},"contracts/modules/astra/cl/CLSwapRouter.sol":{"ast":{"absolutePath":"contracts/modules/astra/cl/CLSwapRouter.sol","exportedSymbols":{"BytesLib":[3807],"CLPath":[3892],"CLSwapRouter":[4402],"Constants":[3067],"ERC20":[8531],"IAstraCLPool":[27],"IAstraCLSwapCallback":[41],"Permit2Payments":[3666],"RouterImmutables":[2788],"SafeCast":[531]},"id":4403,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3894,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:31"},{"absolutePath":"contracts/modules/astra/cl/CLPath.sol","file":"./CLPath.sol","id":3896,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":3893,"src":"71:36:31","symbolAliases":[{"foreign":{"id":3895,"name":"CLPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3892,"src":"79:6:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/astra/cl/BytesLib.sol","file":"./BytesLib.sol","id":3898,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":3808,"src":"108:40:31","symbolAliases":[{"foreign":{"id":3897,"name":"BytesLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"116:8:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","file":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","id":3900,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":532,"src":"149:80:31","symbolAliases":[{"foreign":{"id":3899,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"157:8:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":3902,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":28,"src":"230:89:31","symbolAliases":[{"foreign":{"id":3901,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"238:12:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","id":3904,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":42,"src":"320:114:31","symbolAliases":[{"foreign":{"id":3903,"name":"IAstraCLSwapCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"328:20:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/Constants.sol","file":"../../../libraries/Constants.sol","id":3906,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":3068,"src":"435:59:31","symbolAliases":[{"foreign":{"id":3905,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"443:9:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RouterImmutables.sol","file":"../../../base/RouterImmutables.sol","id":3908,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":2789,"src":"495:68:31","symbolAliases":[{"foreign":{"id":3907,"name":"RouterImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"503:16:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/Permit2Payments.sol","file":"../../Permit2Payments.sol","id":3910,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":3667,"src":"564:58:31","symbolAliases":[{"foreign":{"id":3909,"name":"Permit2Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"572:15:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/Constants.sol","file":"../../../libraries/Constants.sol","id":3912,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":3068,"src":"623:59:31","symbolAliases":[{"foreign":{"id":3911,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"631:9:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":3914,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4403,"sourceUnit":8532,"src":"683:51:31","symbolAliases":[{"foreign":{"id":3913,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"691:5:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3916,"name":"RouterImmutables","nameLocations":["808:16:31"],"nodeType":"IdentifierPath","referencedDeclaration":2788,"src":"808:16:31"},"id":3917,"nodeType":"InheritanceSpecifier","src":"808:16:31"},{"baseName":{"id":3918,"name":"Permit2Payments","nameLocations":["826:15:31"],"nodeType":"IdentifierPath","referencedDeclaration":3666,"src":"826:15:31"},"id":3919,"nodeType":"InheritanceSpecifier","src":"826:15:31"},{"baseName":{"id":3920,"name":"IAstraCLSwapCallback","nameLocations":["843:20:31"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"843:20:31"},"id":3921,"nodeType":"InheritanceSpecifier","src":"843:20:31"}],"canonicalName":"CLSwapRouter","contractDependencies":[],"contractKind":"contract","documentation":{"id":3915,"nodeType":"StructuredDocumentation","src":"736:38:31","text":"@title Router for Astra CL Trades"},"fullyImplemented":false,"id":4402,"linearizedBaseContracts":[4402,41,3666,3544,2788],"name":"CLSwapRouter","nameLocation":"792:12:31","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3924,"libraryName":{"id":3922,"name":"CLPath","nameLocations":["876:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":3892,"src":"876:6:31"},"nodeType":"UsingForDirective","src":"870:23:31","typeName":{"id":3923,"name":"bytes","nodeType":"ElementaryTypeName","src":"887:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"global":false,"id":3927,"libraryName":{"id":3925,"name":"BytesLib","nameLocations":["904:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3807,"src":"904:8:31"},"nodeType":"UsingForDirective","src":"898:25:31","typeName":{"id":3926,"name":"bytes","nodeType":"ElementaryTypeName","src":"917:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"global":false,"id":3930,"libraryName":{"id":3928,"name":"SafeCast","nameLocations":["934:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":531,"src":"934:8:31"},"nodeType":"UsingForDirective","src":"928:27:31","typeName":{"id":3929,"name":"uint256","nodeType":"ElementaryTypeName","src":"947:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"errorSelector":"19cf368b","id":3932,"name":"CLInvalidSwap","nameLocation":"967:13:31","nodeType":"ErrorDefinition","parameters":{"id":3931,"nodeType":"ParameterList","parameters":[],"src":"980:2:31"},"src":"961:22:31"},{"errorSelector":"4566b5a8","id":3934,"name":"CLTooLittleReceived","nameLocation":"994:19:31","nodeType":"ErrorDefinition","parameters":{"id":3933,"nodeType":"ParameterList","parameters":[],"src":"1013:2:31"},"src":"988:28:31"},{"errorSelector":"c980904d","id":3936,"name":"CLTooMuchRequested","nameLocation":"1027:18:31","nodeType":"ErrorDefinition","parameters":{"id":3935,"nodeType":"ParameterList","parameters":[],"src":"1045:2:31"},"src":"1021:27:31"},{"errorSelector":"75e2f0ae","id":3938,"name":"CLInvalidAmountOut","nameLocation":"1059:18:31","nodeType":"ErrorDefinition","parameters":{"id":3937,"nodeType":"ParameterList","parameters":[],"src":"1077:2:31"},"src":"1053:27:31"},{"errorSelector":"014e3613","id":3940,"name":"CLInvalidCaller","nameLocation":"1091:15:31","nodeType":"ErrorDefinition","parameters":{"id":3939,"nodeType":"ParameterList","parameters":[],"src":"1106:2:31"},"src":"1085:24:31"},{"constant":true,"documentation":{"id":3941,"nodeType":"StructuredDocumentation","src":"1115:152:31","text":"@dev Used as the placeholder value for maxAmountIn, because the computed amount in for an exact output swap\n can never actually be this value"},"id":3948,"mutability":"constant","name":"DEFAULT_MAX_AMOUNT_IN","nameLocation":"1297:21:31","nodeType":"VariableDeclaration","scope":4402,"src":"1272:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3942,"name":"uint256","nodeType":"ElementaryTypeName","src":"1272:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":3945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1326:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3944,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:31","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3943,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1321:4:31","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1321:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1335:3:31","memberName":"max","nodeType":"MemberAccess","src":"1321:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"documentation":{"id":3949,"nodeType":"StructuredDocumentation","src":"1345:62:31","text":"@dev Transient storage variable used for checking slippage"},"id":3952,"mutability":"mutable","name":"maxAmountInCached","nameLocation":"1428:17:31","nodeType":"VariableDeclaration","scope":4402,"src":"1412:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3950,"name":"uint256","nodeType":"ElementaryTypeName","src":"1412:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":3951,"name":"DEFAULT_MAX_AMOUNT_IN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"1448:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":true,"documentation":{"id":3953,"nodeType":"StructuredDocumentation","src":"1476:116:31","text":"@dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)"},"id":3956,"mutability":"constant","name":"MIN_SQRT_RATIO","nameLocation":"1623:14:31","nodeType":"VariableDeclaration","scope":4402,"src":"1597:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3954,"name":"uint160","nodeType":"ElementaryTypeName","src":"1597:7:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"34323935313238373339","id":3955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1640:10:31","typeDescriptions":{"typeIdentifier":"t_rational_4295128739_by_1","typeString":"int_const 4295128739"},"value":"4295128739"},"visibility":"internal"},{"constant":true,"documentation":{"id":3957,"nodeType":"StructuredDocumentation","src":"1657:116:31","text":"@dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)"},"id":3960,"mutability":"constant","name":"MAX_SQRT_RATIO","nameLocation":"1804:14:31","nodeType":"VariableDeclaration","scope":4402,"src":"1778:92:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3958,"name":"uint160","nodeType":"ElementaryTypeName","src":"1778:7:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432","id":3959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:49:31","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822378723970342_by_1","typeString":"int_const 1461...(41 digits omitted)...0342"},"value":"1461446703485210103287273052203988822378723970342"},"visibility":"internal"},{"baseFunctions":[40],"body":{"id":4097,"nodeType":"Block","src":"1978:1510:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3969,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"1992:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":3970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2008:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1992:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3972,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"2013:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":3973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2029:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2013:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1992:38:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3979,"nodeType":"IfStatement","src":"1988:66:31","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3976,"name":"CLInvalidSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"2039:13:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2039:15:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3978,"nodeType":"RevertStatement","src":"2032:22:31"}},{"assignments":[null,3981],"declarations":[null,{"constant":false,"id":3981,"mutability":"mutable","name":"payer","nameLocation":"2138:5:31","nodeType":"VariableDeclaration","scope":4097,"src":"2130:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3980,"name":"address","nodeType":"ElementaryTypeName","src":"2130:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3991,"initialValue":{"arguments":[{"id":3984,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3966,"src":"2158:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":3986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2165:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3985,"name":"bytes","nodeType":"ElementaryTypeName","src":"2165:5:31","typeDescriptions":{}}},{"id":3988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2172:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3987,"name":"address","nodeType":"ElementaryTypeName","src":"2172:7:31","typeDescriptions":{}}}],"id":3989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2164:16:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_address_$_$","typeString":"tuple(type(bytes storage pointer),type(address))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_address_$_$","typeString":"tuple(type(bytes storage pointer),type(address))"}],"expression":{"id":3982,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2147:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2151:6:31","memberName":"decode","nodeType":"MemberAccess","src":"2147:10:31","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":3990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2147:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_address_payable_$","typeString":"tuple(bytes memory,address payable)"}},"nodeType":"VariableDeclarationStatement","src":"2127:54:31"},{"assignments":[3993],"declarations":[{"constant":false,"id":3993,"mutability":"mutable","name":"path","nameLocation":"2206:4:31","nodeType":"VariableDeclaration","scope":4097,"src":"2191:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3992,"name":"bytes","nodeType":"ElementaryTypeName","src":"2191:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3998,"initialValue":{"arguments":[{"hexValue":"30","id":3996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2226:1:31","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"}],"expression":{"id":3994,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3966,"src":"2213:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2218:7:31","memberName":"toBytes","nodeType":"MemberAccess","referencedDeclaration":3762,"src":"2213:12:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes calldata)"}},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:15:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"2191:37:31"},{"assignments":[4000,4002,4004],"declarations":[{"constant":false,"id":4000,"mutability":"mutable","name":"tokenIn","nameLocation":"2359:7:31","nodeType":"VariableDeclaration","scope":4097,"src":"2351:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3999,"name":"address","nodeType":"ElementaryTypeName","src":"2351:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4002,"mutability":"mutable","name":"fee","nameLocation":"2375:3:31","nodeType":"VariableDeclaration","scope":4097,"src":"2368:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4001,"name":"uint24","nodeType":"ElementaryTypeName","src":"2368:6:31","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4004,"mutability":"mutable","name":"tokenOut","nameLocation":"2388:8:31","nodeType":"VariableDeclaration","scope":4097,"src":"2380:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4003,"name":"address","nodeType":"ElementaryTypeName","src":"2380:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4008,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4005,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"2400:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2405:15:31","memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"2400:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$_t_uint24_$_t_address_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address,uint24,address)"}},"id":4007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2400:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint24_$_t_address_$","typeString":"tuple(address,uint24,address)"}},"nodeType":"VariableDeclarationStatement","src":"2350:72:31"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4010,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4000,"src":"2456:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4011,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4004,"src":"2465:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4012,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"2475:3:31","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":4009,"name":"computePoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4401,"src":"2437:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view returns (address)"}},"id":4013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2437:42:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":4014,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2483:3:31","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2487:6:31","memberName":"sender","nodeType":"MemberAccess","src":"2483:10:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2437:56:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4020,"nodeType":"IfStatement","src":"2433:86:31","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4017,"name":"CLInvalidCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3940,"src":"2502:15:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2502:17:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4019,"nodeType":"RevertStatement","src":"2495:24:31"}},{"assignments":[4022,4024],"declarations":[{"constant":false,"id":4022,"mutability":"mutable","name":"isExactInput","nameLocation":"2536:12:31","nodeType":"VariableDeclaration","scope":4097,"src":"2531:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4021,"name":"bool","nodeType":"ElementaryTypeName","src":"2531:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4024,"mutability":"mutable","name":"amountToPay","nameLocation":"2558:11:31","nodeType":"VariableDeclaration","scope":4097,"src":"2550:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4023,"name":"uint256","nodeType":"ElementaryTypeName","src":"2550:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4045,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4025,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"2585:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2600:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2585:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4036,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4004,"src":"2651:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4037,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4000,"src":"2662:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2651:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":4041,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"2679:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2671:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4039,"name":"uint256","nodeType":"ElementaryTypeName","src":"2671:7:31","typeDescriptions":{}}},"id":4042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:21:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2650:43:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"id":4044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2585:108:31","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4028,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4000,"src":"2605:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4029,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4004,"src":"2615:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2605:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":4033,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"2633:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2625:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4031,"name":"uint256","nodeType":"ElementaryTypeName","src":"2625:7:31","typeDescriptions":{}}},"id":4034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2625:21:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4035,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2604:43:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2530:163:31"},{"condition":{"id":4046,"name":"isExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4022,"src":"2708:12:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4095,"nodeType":"Block","src":"2855:627:31","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4056,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"2925:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2930:16:31","memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"2925:21:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bool)"}},"id":4058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2925:23:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4093,"nodeType":"Block","src":"3179:293:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4078,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4024,"src":"3201:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4079,"name":"maxAmountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3952,"src":"3215:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3201:31:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4084,"nodeType":"IfStatement","src":"3197:64:31","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4081,"name":"CLTooMuchRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"3241:18:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4083,"nodeType":"RevertStatement","src":"3234:27:31"}},{"expression":{"arguments":[{"id":4086,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4004,"src":"3416:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4087,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"3426:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4088,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3433:3:31","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3437:6:31","memberName":"sender","nodeType":"MemberAccess","src":"3433:10:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4090,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4024,"src":"3445:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4085,"name":"payOrPermit2Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3665,"src":"3395:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3395:62:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4092,"nodeType":"ExpressionStatement","src":"3395:62:31"}]},"id":4094,"nodeType":"IfStatement","src":"2921:551:31","trueBody":{"id":4077,"nodeType":"Block","src":"2950:223:31","statements":[{"expression":{"id":4063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4059,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"3055:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4060,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"3062:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3067:9:31","memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":3891,"src":"3062:14:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes calldata)"}},"id":4062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3062:16:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"3055:23:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4064,"nodeType":"ExpressionStatement","src":"3055:23:31"},{"expression":{"arguments":[{"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3102:23:31","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4066,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4024,"src":"3103:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3115:8:31","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":530,"src":"3103:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3103:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":4070,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3127:3:31","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3131:6:31","memberName":"sender","nodeType":"MemberAccess","src":"3127:10:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4072,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"3139:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":4073,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"3145:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":4074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3152:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4065,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4349,"src":"3096:5:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_address_$_t_bytes_calldata_ptr_$_t_address_$_t_bool_$returns$_t_int256_$_t_int256_$_t_bool_$","typeString":"function (int256,address,bytes calldata,address,bool) returns (int256,int256,bool)"}},"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3096:62:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$_t_bool_$","typeString":"tuple(int256,int256,bool)"}},"id":4076,"nodeType":"ExpressionStatement","src":"3096:62:31"}]}}]},"id":4096,"nodeType":"IfStatement","src":"2704:778:31","trueBody":{"id":4055,"nodeType":"Block","src":"2722:127:31","statements":[{"expression":{"arguments":[{"id":4048,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4000,"src":"2798:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4049,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"2807:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4050,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2814:3:31","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2818:6:31","memberName":"sender","nodeType":"MemberAccess","src":"2814:10:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4052,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4024,"src":"2826:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4047,"name":"payOrPermit2Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3665,"src":"2777:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2777:61:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4054,"nodeType":"ExpressionStatement","src":"2777:61:31"}]}}]},"functionSelector":"11c17848","id":4098,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLSwapCallback","nameLocation":"1886:19:31","nodeType":"FunctionDefinition","parameters":{"id":3967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3962,"mutability":"mutable","name":"amount0Delta","nameLocation":"1913:12:31","nodeType":"VariableDeclaration","scope":4098,"src":"1906:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3961,"name":"int256","nodeType":"ElementaryTypeName","src":"1906:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3964,"mutability":"mutable","name":"amount1Delta","nameLocation":"1934:12:31","nodeType":"VariableDeclaration","scope":4098,"src":"1927:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3963,"name":"int256","nodeType":"ElementaryTypeName","src":"1927:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3966,"mutability":"mutable","name":"data","nameLocation":"1963:4:31","nodeType":"VariableDeclaration","scope":4098,"src":"1948:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3965,"name":"bytes","nodeType":"ElementaryTypeName","src":"1948:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1905:63:31"},"returnParameters":{"id":3968,"nodeType":"ParameterList","parameters":[],"src":"1978:0:31"},"scope":4402,"src":"1877:1611:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4213,"nodeType":"Block","src":"4051:1329:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4112,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"4172:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4113,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"4184:9:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":4114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4194:16:31","memberName":"CONTRACT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":3015,"src":"4184:26:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4172:38:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4135,"nodeType":"IfStatement","src":"4168:174:31","trueBody":{"id":4134,"nodeType":"Block","src":"4212:130:31","statements":[{"assignments":[4117],"declarations":[{"constant":false,"id":4117,"mutability":"mutable","name":"tokenIn","nameLocation":"4234:7:31","nodeType":"VariableDeclaration","scope":4134,"src":"4226:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4116,"name":"address","nodeType":"ElementaryTypeName","src":"4226:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4121,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4118,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"4244:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4249:16:31","memberName":"decodeFirstToken","nodeType":"MemberAccess","referencedDeclaration":3877,"src":"4244:21:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address)"}},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4244:23:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4226:41:31"},{"expression":{"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4122,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"4281:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":4129,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4325:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_CLSwapRouter_$4402","typeString":"contract CLSwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CLSwapRouter_$4402","typeString":"contract CLSwapRouter"}],"id":4128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4317:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4127,"name":"address","nodeType":"ElementaryTypeName","src":"4317:7:31","typeDescriptions":{}}},"id":4130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4317:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":4124,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4117,"src":"4298:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4123,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"4292:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":4125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:14:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":4126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4307:9:31","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"4292:24:31","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:39:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4281:50:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4133,"nodeType":"ExpressionStatement","src":"4281:50:31"}]}},{"assignments":[4137],"declarations":[{"constant":false,"id":4137,"mutability":"mutable","name":"amountOut","nameLocation":"4360:9:31","nodeType":"VariableDeclaration","scope":4213,"src":"4352:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4136,"name":"uint256","nodeType":"ElementaryTypeName","src":"4352:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4138,"nodeType":"VariableDeclarationStatement","src":"4352:17:31"},{"body":{"id":4204,"nodeType":"Block","src":"4392:909:31","statements":[{"assignments":[4141],"declarations":[{"constant":false,"id":4141,"mutability":"mutable","name":"hasMultiplePools","nameLocation":"4411:16:31","nodeType":"VariableDeclaration","scope":4204,"src":"4406:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4140,"name":"bool","nodeType":"ElementaryTypeName","src":"4406:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4145,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4142,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"4430:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4435:16:31","memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"4430:21:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bool)"}},"id":4144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4430:23:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4406:47:31"},{"assignments":[4147,4149,4151],"declarations":[{"constant":false,"id":4147,"mutability":"mutable","name":"amount0Delta","nameLocation":"4555:12:31","nodeType":"VariableDeclaration","scope":4204,"src":"4548:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4146,"name":"int256","nodeType":"ElementaryTypeName","src":"4548:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4149,"mutability":"mutable","name":"amount1Delta","nameLocation":"4576:12:31","nodeType":"VariableDeclaration","scope":4204,"src":"4569:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4148,"name":"int256","nodeType":"ElementaryTypeName","src":"4569:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4151,"mutability":"mutable","name":"zeroForOne","nameLocation":"4595:10:31","nodeType":"VariableDeclaration","scope":4204,"src":"4590:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4150,"name":"bool","nodeType":"ElementaryTypeName","src":"4590:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4169,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4153,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"4632:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4641:8:31","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":530,"src":"4632:17:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":4155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4632:19:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"id":4156,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4141,"src":"4669:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4161,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"4704:9:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4669:44:31","trueExpression":{"arguments":[{"id":4159,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4696:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_CLSwapRouter_$4402","typeString":"contract CLSwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CLSwapRouter_$4402","typeString":"contract CLSwapRouter"}],"id":4158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4688:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4157,"name":"address","nodeType":"ElementaryTypeName","src":"4688:7:31","typeDescriptions":{}}},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4688:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4163,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"4782:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4787:12:31","memberName":"getFirstPool","nodeType":"MemberAccess","referencedDeclaration":3863,"src":"4782:17:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes calldata)"}},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:19:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":4166,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"4852:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":4167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4926:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4152,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4349,"src":"4609:5:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_address_$_t_bytes_calldata_ptr_$_t_address_$_t_bool_$returns$_t_int256_$_t_int256_$_t_bool_$","typeString":"function (int256,address,bytes calldata,address,bool) returns (int256,int256,bool)"}},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4609:335:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$_t_bool_$","typeString":"tuple(int256,int256,bool)"}},"nodeType":"VariableDeclarationStatement","src":"4547:397:31"},{"expression":{"id":4180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4170,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"4959:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4978:43:31","subExpression":{"components":[{"condition":{"id":4173,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"4980:10:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4175,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"5008:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4980:40:31","trueExpression":{"id":4174,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4149,"src":"4993:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4979:42:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4970:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4171,"name":"uint256","nodeType":"ElementaryTypeName","src":"4970:7:31","typeDescriptions":{}}},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4970:52:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4959:63:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4181,"nodeType":"ExpressionStatement","src":"4959:63:31"},{"condition":{"id":4182,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4141,"src":"5096:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4202,"nodeType":"Block","src":"5215:76:31","statements":[{"expression":{"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4197,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4137,"src":"5233:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4198,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"5245:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5233:20:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4200,"nodeType":"ExpressionStatement","src":"5233:20:31"},{"id":4201,"nodeType":"Break","src":"5271:5:31"}]},"id":4203,"nodeType":"IfStatement","src":"5092:199:31","trueBody":{"id":4196,"nodeType":"Block","src":"5114:95:31","statements":[{"expression":{"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4183,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"5132:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4186,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5148:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_CLSwapRouter_$4402","typeString":"contract CLSwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CLSwapRouter_$4402","typeString":"contract CLSwapRouter"}],"id":4185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5140:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4184,"name":"address","nodeType":"ElementaryTypeName","src":"5140:7:31","typeDescriptions":{}}},"id":4187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5132:21:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4189,"nodeType":"ExpressionStatement","src":"5132:21:31"},{"expression":{"id":4194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4190,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"5171:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4191,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"5178:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5183:9:31","memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":3891,"src":"5178:14:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_calldata_ptr_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes calldata)"}},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5178:16:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"5171:23:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4195,"nodeType":"ExpressionStatement","src":"5171:23:31"}]}}]},"condition":{"hexValue":"74727565","id":4139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4386:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":4205,"nodeType":"WhileStatement","src":"4379:922:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4206,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4137,"src":"5315:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4207,"name":"amountOutMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4105,"src":"5327:16:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5315:28:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4212,"nodeType":"IfStatement","src":"5311:62:31","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4209,"name":"CLTooLittleReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"5352:19:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5352:21:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4211,"nodeType":"RevertStatement","src":"5345:28:31"}}]},"documentation":{"id":4099,"nodeType":"StructuredDocumentation","src":"3494:372:31","text":"@notice Performs a Astra CL exact input swap\n @param recipient The recipient of the output tokens\n @param amountIn The amount of input tokens for the trade\n @param amountOutMinimum The minimum desired amount of output tokens\n @param path The path of the trade as a bytes string\n @param payer The address that will be paying the input"},"id":4214,"implemented":true,"kind":"function","modifiers":[],"name":"clSwapExactInput","nameLocation":"3880:16:31","nodeType":"FunctionDefinition","parameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4101,"mutability":"mutable","name":"recipient","nameLocation":"3914:9:31","nodeType":"VariableDeclaration","scope":4214,"src":"3906:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4100,"name":"address","nodeType":"ElementaryTypeName","src":"3906:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4103,"mutability":"mutable","name":"amountIn","nameLocation":"3941:8:31","nodeType":"VariableDeclaration","scope":4214,"src":"3933:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4102,"name":"uint256","nodeType":"ElementaryTypeName","src":"3933:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4105,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"3967:16:31","nodeType":"VariableDeclaration","scope":4214,"src":"3959:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4104,"name":"uint256","nodeType":"ElementaryTypeName","src":"3959:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4107,"mutability":"mutable","name":"path","nameLocation":"4008:4:31","nodeType":"VariableDeclaration","scope":4214,"src":"3993:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4106,"name":"bytes","nodeType":"ElementaryTypeName","src":"3993:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4109,"mutability":"mutable","name":"payer","nameLocation":"4030:5:31","nodeType":"VariableDeclaration","scope":4214,"src":"4022:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4108,"name":"address","nodeType":"ElementaryTypeName","src":"4022:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3896:145:31"},"returnParameters":{"id":4111,"nodeType":"ParameterList","parameters":[],"src":"4051:0:31"},"scope":4402,"src":"3871:1509:31","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4275,"nodeType":"Block","src":"5956:420:31","statements":[{"expression":{"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4228,"name":"maxAmountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3952,"src":"5966:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4229,"name":"amountInMaximum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4221,"src":"5986:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:35:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4231,"nodeType":"ExpressionStatement","src":"5966:35:31"},{"assignments":[4233,4235,4237],"declarations":[{"constant":false,"id":4233,"mutability":"mutable","name":"amount0Delta","nameLocation":"6019:12:31","nodeType":"VariableDeclaration","scope":4275,"src":"6012:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4232,"name":"int256","nodeType":"ElementaryTypeName","src":"6012:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4235,"mutability":"mutable","name":"amount1Delta","nameLocation":"6040:12:31","nodeType":"VariableDeclaration","scope":4275,"src":"6033:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4234,"name":"int256","nodeType":"ElementaryTypeName","src":"6033:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4237,"mutability":"mutable","name":"zeroForOne","nameLocation":"6059:10:31","nodeType":"VariableDeclaration","scope":4275,"src":"6054:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4236,"name":"bool","nodeType":"ElementaryTypeName","src":"6054:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4248,"initialValue":{"arguments":[{"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6091:21:31","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4239,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4219,"src":"6092:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6102:8:31","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":530,"src":"6092:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":4241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6092:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4243,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"6114:9:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4244,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"6125:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":4245,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"6131:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":4246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6138:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4238,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4349,"src":"6085:5:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_address_$_t_bytes_calldata_ptr_$_t_address_$_t_bool_$returns$_t_int256_$_t_int256_$_t_bool_$","typeString":"function (int256,address,bytes calldata,address,bool) returns (int256,int256,bool)"}},"id":4247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6085:59:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$_t_bool_$","typeString":"tuple(int256,int256,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6011:133:31"},{"assignments":[4250],"declarations":[{"constant":false,"id":4250,"mutability":"mutable","name":"amountOutReceived","nameLocation":"6163:17:31","nodeType":"VariableDeclaration","scope":4275,"src":"6155:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4249,"name":"uint256","nodeType":"ElementaryTypeName","src":"6155:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4263,"initialValue":{"condition":{"id":4251,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4237,"src":"6183:10:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":4260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6229:13:31","subExpression":{"id":4259,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"6230:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6221:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4257,"name":"uint256","nodeType":"ElementaryTypeName","src":"6221:7:31","typeDescriptions":{}}},"id":4261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6221:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6183:60:31","trueExpression":{"arguments":[{"id":4255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6204:13:31","subExpression":{"id":4254,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"6205:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6196:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4252,"name":"uint256","nodeType":"ElementaryTypeName","src":"6196:7:31","typeDescriptions":{}}},"id":4256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6196:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6155:88:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4264,"name":"amountOutReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4250,"src":"6258:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4265,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4219,"src":"6279:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6258:30:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4270,"nodeType":"IfStatement","src":"6254:63:31","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4267,"name":"CLInvalidAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"6297:18:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6297:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4269,"nodeType":"RevertStatement","src":"6290:27:31"}},{"expression":{"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4271,"name":"maxAmountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3952,"src":"6328:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4272,"name":"DEFAULT_MAX_AMOUNT_IN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"6348:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6328:41:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4274,"nodeType":"ExpressionStatement","src":"6328:41:31"}]},"documentation":{"id":4215,"nodeType":"StructuredDocumentation","src":"5386:384:31","text":"@notice Performs a Astra CL exact output swap\n @param recipient The recipient of the output tokens\n @param amountOut The amount of output tokens to receive for the trade\n @param amountInMaximum The maximum desired amount of input tokens\n @param path The path of the trade as a bytes string\n @param payer The address that will be paying the input"},"id":4276,"implemented":true,"kind":"function","modifiers":[],"name":"clSwapExactOutput","nameLocation":"5784:17:31","nodeType":"FunctionDefinition","parameters":{"id":4226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4217,"mutability":"mutable","name":"recipient","nameLocation":"5819:9:31","nodeType":"VariableDeclaration","scope":4276,"src":"5811:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4216,"name":"address","nodeType":"ElementaryTypeName","src":"5811:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4219,"mutability":"mutable","name":"amountOut","nameLocation":"5846:9:31","nodeType":"VariableDeclaration","scope":4276,"src":"5838:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4218,"name":"uint256","nodeType":"ElementaryTypeName","src":"5838:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4221,"mutability":"mutable","name":"amountInMaximum","nameLocation":"5873:15:31","nodeType":"VariableDeclaration","scope":4276,"src":"5865:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4220,"name":"uint256","nodeType":"ElementaryTypeName","src":"5865:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4223,"mutability":"mutable","name":"path","nameLocation":"5913:4:31","nodeType":"VariableDeclaration","scope":4276,"src":"5898:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4222,"name":"bytes","nodeType":"ElementaryTypeName","src":"5898:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4225,"mutability":"mutable","name":"payer","nameLocation":"5935:5:31","nodeType":"VariableDeclaration","scope":4276,"src":"5927:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4224,"name":"address","nodeType":"ElementaryTypeName","src":"5927:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5801:145:31"},"returnParameters":{"id":4227,"nodeType":"ParameterList","parameters":[],"src":"5956:0:31"},"scope":4402,"src":"5775:601:31","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4348,"nodeType":"Block","src":"6729:449:31","statements":[{"assignments":[4297,4299,4301],"declarations":[{"constant":false,"id":4297,"mutability":"mutable","name":"tokenIn","nameLocation":"6748:7:31","nodeType":"VariableDeclaration","scope":4348,"src":"6740:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4296,"name":"address","nodeType":"ElementaryTypeName","src":"6740:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4299,"mutability":"mutable","name":"fee","nameLocation":"6764:3:31","nodeType":"VariableDeclaration","scope":4348,"src":"6757:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4298,"name":"uint24","nodeType":"ElementaryTypeName","src":"6757:6:31","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4301,"mutability":"mutable","name":"tokenOut","nameLocation":"6777:8:31","nodeType":"VariableDeclaration","scope":4348,"src":"6769:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4300,"name":"address","nodeType":"ElementaryTypeName","src":"6769:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4305,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4302,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4283,"src":"6789:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6794:15:31","memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"6789:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$_t_uint24_$_t_address_$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address,uint24,address)"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6789:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint24_$_t_address_$","typeString":"tuple(address,uint24,address)"}},"nodeType":"VariableDeclarationStatement","src":"6739:72:31"},{"expression":{"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4306,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"6822:10:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":4307,"name":"isExactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4287,"src":"6835:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4311,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"6868:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4312,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"6879:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6868:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6835:51:31","trueExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4308,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"6847:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4309,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"6857:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6847:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6822:64:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4316,"nodeType":"ExpressionStatement","src":"6822:64:31"},{"expression":{"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4317,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"6898:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4318,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"6912:12:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4319,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6897:28:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4328,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"7003:9:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4329,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"7026:10:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4330,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"7050:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"components":[{"condition":{"id":4331,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"7071:10:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4335,"name":"MAX_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"7105:14:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7122:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7105:18:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":4338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7071:52:31","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4332,"name":"MIN_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"7084:14:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7101:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7084:18:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4339,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7070:54:31","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":4342,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4283,"src":"7149:4:31","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":4343,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4285,"src":"7155:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4340,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7138:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7142:6:31","memberName":"encode","nodeType":"MemberAccess","src":"7138:10:31","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7138:23:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"arguments":[{"id":4322,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"6960:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4323,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"6969:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4324,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4299,"src":"6979:3:31","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":4321,"name":"computePoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4401,"src":"6941:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view returns (address)"}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6941:42:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4320,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"6928:12:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$27_$","typeString":"type(contract IAstraCLPool)"}},"id":4326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6928:56:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$27","typeString":"contract IAstraCLPool"}},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6985:4:31","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":118,"src":"6928:61:31","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":4345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6928:243:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"6897:274:31","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4347,"nodeType":"ExpressionStatement","src":"6897:274:31"}]},"documentation":{"id":4277,"nodeType":"StructuredDocumentation","src":"6382:145:31","text":"@dev Performs a single swap for both exactIn and exactOut\n For exactIn, `amount` is `amountIn`. For exactOut, `amount` is `-amountOut`"},"id":4349,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nameLocation":"6541:5:31","nodeType":"FunctionDefinition","parameters":{"id":4288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4279,"mutability":"mutable","name":"amount","nameLocation":"6554:6:31","nodeType":"VariableDeclaration","scope":4349,"src":"6547:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4278,"name":"int256","nodeType":"ElementaryTypeName","src":"6547:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4281,"mutability":"mutable","name":"recipient","nameLocation":"6570:9:31","nodeType":"VariableDeclaration","scope":4349,"src":"6562:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4280,"name":"address","nodeType":"ElementaryTypeName","src":"6562:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4283,"mutability":"mutable","name":"path","nameLocation":"6596:4:31","nodeType":"VariableDeclaration","scope":4349,"src":"6581:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4282,"name":"bytes","nodeType":"ElementaryTypeName","src":"6581:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4285,"mutability":"mutable","name":"payer","nameLocation":"6610:5:31","nodeType":"VariableDeclaration","scope":4349,"src":"6602:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4284,"name":"address","nodeType":"ElementaryTypeName","src":"6602:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4287,"mutability":"mutable","name":"isExactIn","nameLocation":"6622:9:31","nodeType":"VariableDeclaration","scope":4349,"src":"6617:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4286,"name":"bool","nodeType":"ElementaryTypeName","src":"6617:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6546:86:31"},"returnParameters":{"id":4295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4290,"mutability":"mutable","name":"amount0Delta","nameLocation":"6673:12:31","nodeType":"VariableDeclaration","scope":4349,"src":"6666:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4289,"name":"int256","nodeType":"ElementaryTypeName","src":"6666:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4292,"mutability":"mutable","name":"amount1Delta","nameLocation":"6694:12:31","nodeType":"VariableDeclaration","scope":4349,"src":"6687:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4291,"name":"int256","nodeType":"ElementaryTypeName","src":"6687:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4294,"mutability":"mutable","name":"zeroForOne","nameLocation":"6713:10:31","nodeType":"VariableDeclaration","scope":4349,"src":"6708:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4293,"name":"bool","nodeType":"ElementaryTypeName","src":"6708:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6665:59:31"},"scope":4402,"src":"6532:646:31","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4400,"nodeType":"Block","src":"7292:519:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4360,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"7306:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4361,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"7315:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7306:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4371,"nodeType":"IfStatement","src":"7302:56:31","trueBody":{"expression":{"id":4369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4363,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"7324:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4364,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"7332:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4365,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7323:16:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4366,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"7343:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4367,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"7351:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7342:16:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"7323:35:31","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4370,"nodeType":"ExpressionStatement","src":"7323:35:31"}},{"expression":{"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4372,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"7368:4:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":4382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"7531:7:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":4383,"name":"ASTRA_CL_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"7568:16:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":4387,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"7635:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4388,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"7643:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4389,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"7651:3:31","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":4385,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7624:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7628:6:31","memberName":"encode","nodeType":"MemberAccess","src":"7624:10:31","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7624:31:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4384,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7614:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7614:42:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4392,"name":"ASTRA_CL_POOL_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"7686:28:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4380,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7485:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7489:12:31","memberName":"encodePacked","nodeType":"MemberAccess","src":"7485:16:31","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:255:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4379,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7450:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7450:312:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7421:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4377,"name":"uint256","nodeType":"ElementaryTypeName","src":"7421:7:31","typeDescriptions":{}}},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7421:359:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7396:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4375,"name":"uint160","nodeType":"ElementaryTypeName","src":"7396:7:31","typeDescriptions":{}}},"id":4396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7396:398:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7375:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4373,"name":"address","nodeType":"ElementaryTypeName","src":"7375:7:31","typeDescriptions":{}}},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7375:429:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7368:436:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4399,"nodeType":"ExpressionStatement","src":"7368:436:31"}]},"id":4401,"implemented":true,"kind":"function","modifiers":[],"name":"computePoolAddress","nameLocation":"7193:18:31","nodeType":"FunctionDefinition","parameters":{"id":4356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4351,"mutability":"mutable","name":"tokenA","nameLocation":"7220:6:31","nodeType":"VariableDeclaration","scope":4401,"src":"7212:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4350,"name":"address","nodeType":"ElementaryTypeName","src":"7212:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4353,"mutability":"mutable","name":"tokenB","nameLocation":"7236:6:31","nodeType":"VariableDeclaration","scope":4401,"src":"7228:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4352,"name":"address","nodeType":"ElementaryTypeName","src":"7228:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4355,"mutability":"mutable","name":"fee","nameLocation":"7251:3:31","nodeType":"VariableDeclaration","scope":4401,"src":"7244:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4354,"name":"uint24","nodeType":"ElementaryTypeName","src":"7244:6:31","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"7211:44:31"},"returnParameters":{"id":4359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4358,"mutability":"mutable","name":"pool","nameLocation":"7286:4:31","nodeType":"VariableDeclaration","scope":4401,"src":"7278:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4357,"name":"address","nodeType":"ElementaryTypeName","src":"7278:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7277:14:31"},"scope":4402,"src":"7184:627:31","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":4403,"src":"774:7039:31","usedErrors":[3093,3095,3097,3099,3564,3672,3932,3934,3936,3938,3940,7269]}],"src":"45:7769:31"},"id":31},"contracts/modules/astra/classic/AstraClassicLibrary.sol":{"ast":{"absolutePath":"contracts/modules/astra/classic/AstraClassicLibrary.sol","exportedSymbols":{"AstraClassicLibrary":[4788],"IAstraPair":[773]},"id":4789,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4404,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"45:24:32"},{"absolutePath":"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol","file":"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol","id":4406,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4789,"sourceUnit":774,"src":"71:92:32","symbolAliases":[{"foreign":{"id":4405,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":773,"src":"79:10:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"AstraClassicLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":4407,"nodeType":"StructuredDocumentation","src":"165:99:32","text":"@title Astra Classic Helper Library\n @notice Calculates the recipient address for a command"},"fullyImplemented":true,"id":4788,"linearizedBaseContracts":[4788],"name":"AstraClassicLibrary","nameLocation":"272:19:32","nodeType":"ContractDefinition","nodes":[{"errorSelector":"7b9c8916","id":4409,"name":"InvalidReserves","nameLocation":"304:15:32","nodeType":"ErrorDefinition","parameters":{"id":4408,"nodeType":"ParameterList","parameters":[],"src":"319:2:32"},"src":"298:24:32"},{"errorSelector":"20db8267","id":4411,"name":"InvalidPath","nameLocation":"333:11:32","nodeType":"ErrorDefinition","parameters":{"id":4410,"nodeType":"ParameterList","parameters":[],"src":"344:2:32"},"src":"327:20:32"},{"body":{"id":4443,"nodeType":"Block","src":"872:150:32","statements":[{"assignments":[4426,4428],"declarations":[{"constant":false,"id":4426,"mutability":"mutable","name":"token0","nameLocation":"891:6:32","nodeType":"VariableDeclaration","scope":4443,"src":"883:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4425,"name":"address","nodeType":"ElementaryTypeName","src":"883:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4428,"mutability":"mutable","name":"token1","nameLocation":"907:6:32","nodeType":"VariableDeclaration","scope":4443,"src":"899:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4427,"name":"address","nodeType":"ElementaryTypeName","src":"899:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4433,"initialValue":{"arguments":[{"id":4430,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4418,"src":"928:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4431,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4420,"src":"936:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4429,"name":"sortTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4787,"src":"917:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":4432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"917:26:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"882:61:32"},{"expression":{"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4434,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4423,"src":"953:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4436,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4414,"src":"977:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4437,"name":"initCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"986:12:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4438,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4426,"src":"1000:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4439,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"1008:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4435,"name":"pairForPreSorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4524,"src":"960:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address,address) pure returns (address)"}},"id":4440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"960:55:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"953:62:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4442,"nodeType":"ExpressionStatement","src":"953:62:32"}]},"documentation":{"id":4412,"nodeType":"StructuredDocumentation","src":"353:361:32","text":"@notice Calculates the classic address for a pair without making any external calls\n @param factory The address of the classic factory\n @param initCodeHash The hash of the pair initcode\n @param tokenA One of the tokens in the pair\n @param tokenB The other token in the pair\n @return pair The resultant classic pair address"},"id":4444,"implemented":true,"kind":"function","modifiers":[],"name":"pairFor","nameLocation":"728:7:32","nodeType":"FunctionDefinition","parameters":{"id":4421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4414,"mutability":"mutable","name":"factory","nameLocation":"744:7:32","nodeType":"VariableDeclaration","scope":4444,"src":"736:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4413,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4416,"mutability":"mutable","name":"initCodeHash","nameLocation":"761:12:32","nodeType":"VariableDeclaration","scope":4444,"src":"753:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4415,"name":"bytes32","nodeType":"ElementaryTypeName","src":"753:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4418,"mutability":"mutable","name":"tokenA","nameLocation":"783:6:32","nodeType":"VariableDeclaration","scope":4444,"src":"775:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4417,"name":"address","nodeType":"ElementaryTypeName","src":"775:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4420,"mutability":"mutable","name":"tokenB","nameLocation":"799:6:32","nodeType":"VariableDeclaration","scope":4444,"src":"791:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4419,"name":"address","nodeType":"ElementaryTypeName","src":"791:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"735:71:32"},"returnParameters":{"id":4424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4423,"mutability":"mutable","name":"pair","nameLocation":"862:4:32","nodeType":"VariableDeclaration","scope":4444,"src":"854:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4422,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"853:14:32"},"scope":4788,"src":"719:303:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4481,"nodeType":"Block","src":"1624:158:32","statements":[{"assignments":[4461],"declarations":[{"constant":false,"id":4461,"mutability":"mutable","name":"token1","nameLocation":"1642:6:32","nodeType":"VariableDeclaration","scope":4481,"src":"1634:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4460,"name":"address","nodeType":"ElementaryTypeName","src":"1634:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4462,"nodeType":"VariableDeclarationStatement","src":"1634:14:32"},{"expression":{"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4463,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"1659:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4464,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4461,"src":"1667:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4465,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1658:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4467,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4451,"src":"1688:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4468,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"1696:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4466,"name":"sortTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4787,"src":"1677:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":4469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1677:26:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"1658:45:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4471,"nodeType":"ExpressionStatement","src":"1658:45:32"},{"expression":{"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4472,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"1713:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4474,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4447,"src":"1737:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4475,"name":"initCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4449,"src":"1746:12:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4476,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"1760:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4477,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4461,"src":"1768:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4473,"name":"pairForPreSorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4524,"src":"1720:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address,address) pure returns (address)"}},"id":4478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1720:55:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1713:62:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4480,"nodeType":"ExpressionStatement","src":"1713:62:32"}]},"documentation":{"id":4445,"nodeType":"StructuredDocumentation","src":"1028:413:32","text":"@notice Calculates the classic address for a pair and the pair's token0\n @param factory The address of the classic factory\n @param initCodeHash The hash of the pair initcode\n @param tokenA One of the tokens in the pair\n @param tokenB The other token in the pair\n @return pair The resultant classic pair address\n @return token0 The token considered token0 in this pair"},"id":4482,"implemented":true,"kind":"function","modifiers":[],"name":"pairAndToken0For","nameLocation":"1455:16:32","nodeType":"FunctionDefinition","parameters":{"id":4454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4447,"mutability":"mutable","name":"factory","nameLocation":"1480:7:32","nodeType":"VariableDeclaration","scope":4482,"src":"1472:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4446,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4449,"mutability":"mutable","name":"initCodeHash","nameLocation":"1497:12:32","nodeType":"VariableDeclaration","scope":4482,"src":"1489:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4448,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1489:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4451,"mutability":"mutable","name":"tokenA","nameLocation":"1519:6:32","nodeType":"VariableDeclaration","scope":4482,"src":"1511:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4450,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4453,"mutability":"mutable","name":"tokenB","nameLocation":"1535:6:32","nodeType":"VariableDeclaration","scope":4482,"src":"1527:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4452,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1471:71:32"},"returnParameters":{"id":4459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4456,"mutability":"mutable","name":"pair","nameLocation":"1598:4:32","nodeType":"VariableDeclaration","scope":4482,"src":"1590:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4455,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4458,"mutability":"mutable","name":"token0","nameLocation":"1612:6:32","nodeType":"VariableDeclaration","scope":4482,"src":"1604:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4457,"name":"address","nodeType":"ElementaryTypeName","src":"1604:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1589:30:32"},"scope":4788,"src":"1446:336:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4523,"nodeType":"Block","src":"2300:291:32","statements":[{"expression":{"id":4521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4496,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4494,"src":"2310:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":4506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2444:7:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":4507,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"2453:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":4511,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4489,"src":"2489:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4512,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2497:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4509,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2472:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2476:12:32","memberName":"encodePacked","nodeType":"MemberAccess","src":"2472:16:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2472:32:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4508,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2462:9:32","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2462:43:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4515,"name":"initCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4487,"src":"2507:12:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4504,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2427:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2431:12:32","memberName":"encodePacked","nodeType":"MemberAccess","src":"2427:16:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2427:93:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4503,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2392:9:32","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2392:150:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2363:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4501,"name":"uint256","nodeType":"ElementaryTypeName","src":"2363:7:32","typeDescriptions":{}}},"id":4518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2363:197:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2338:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4499,"name":"uint160","nodeType":"ElementaryTypeName","src":"2338:7:32","typeDescriptions":{}}},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2338:236:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2317:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4497,"name":"address","nodeType":"ElementaryTypeName","src":"2317:7:32","typeDescriptions":{}}},"id":4520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2317:267:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2310:274:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4522,"nodeType":"ExpressionStatement","src":"2310:274:32"}]},"documentation":{"id":4483,"nodeType":"StructuredDocumentation","src":"1788:346:32","text":"@notice Calculates the classic address for a pair assuming the input tokens are pre-sorted\n @param factory The address of the classic factory\n @param initCodeHash The hash of the pair initcode\n @param token0 The pair's token0\n @param token1 The pair's token1\n @return pair The resultant classic pair address"},"id":4524,"implemented":true,"kind":"function","modifiers":[],"name":"pairForPreSorted","nameLocation":"2148:16:32","nodeType":"FunctionDefinition","parameters":{"id":4492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4485,"mutability":"mutable","name":"factory","nameLocation":"2173:7:32","nodeType":"VariableDeclaration","scope":4524,"src":"2165:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4484,"name":"address","nodeType":"ElementaryTypeName","src":"2165:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4487,"mutability":"mutable","name":"initCodeHash","nameLocation":"2190:12:32","nodeType":"VariableDeclaration","scope":4524,"src":"2182:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2182:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4489,"mutability":"mutable","name":"token0","nameLocation":"2212:6:32","nodeType":"VariableDeclaration","scope":4524,"src":"2204:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4488,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4491,"mutability":"mutable","name":"token1","nameLocation":"2228:6:32","nodeType":"VariableDeclaration","scope":4524,"src":"2220:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4490,"name":"address","nodeType":"ElementaryTypeName","src":"2220:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2164:71:32"},"returnParameters":{"id":4495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4494,"mutability":"mutable","name":"pair","nameLocation":"2290:4:32","nodeType":"VariableDeclaration","scope":4524,"src":"2282:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4493,"name":"address","nodeType":"ElementaryTypeName","src":"2282:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2281:14:32"},"scope":4788,"src":"2139:452:32","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4581,"nodeType":"Block","src":"3266:288:32","statements":[{"assignments":[4543],"declarations":[{"constant":false,"id":4543,"mutability":"mutable","name":"token0","nameLocation":"3284:6:32","nodeType":"VariableDeclaration","scope":4581,"src":"3276:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4542,"name":"address","nodeType":"ElementaryTypeName","src":"3276:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4544,"nodeType":"VariableDeclarationStatement","src":"3276:14:32"},{"expression":{"id":4554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4545,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4536,"src":"3301:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4546,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"3307:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4547,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3300:14:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4549,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"3334:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4550,"name":"initCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"3343:12:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4551,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4531,"src":"3357:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4552,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4533,"src":"3365:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4548,"name":"pairAndToken0For","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4482,"src":"3317:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,bytes32,address,address) pure returns (address,address)"}},"id":4553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3317:55:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"3300:72:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4555,"nodeType":"ExpressionStatement","src":"3300:72:32"},{"assignments":[4557,4559,null],"declarations":[{"constant":false,"id":4557,"mutability":"mutable","name":"reserve0","nameLocation":"3391:8:32","nodeType":"VariableDeclaration","scope":4581,"src":"3383:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4556,"name":"uint256","nodeType":"ElementaryTypeName","src":"3383:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4559,"mutability":"mutable","name":"reserve1","nameLocation":"3409:8:32","nodeType":"VariableDeclaration","scope":4581,"src":"3401:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4558,"name":"uint256","nodeType":"ElementaryTypeName","src":"3401:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":4565,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4561,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4536,"src":"3433:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4560,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":773,"src":"3422:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$773_$","typeString":"type(contract IAstraPair)"}},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3422:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$773","typeString":"contract IAstraPair"}},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3439:11:32","memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":715,"src":"3422:28:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":4564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3422:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"3382:70:32"},{"expression":{"id":4579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4566,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"3463:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4567,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"3473:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4568,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3462:20:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4569,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4531,"src":"3485:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4570,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"3495:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3485:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":4575,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4559,"src":"3528:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4576,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4557,"src":"3538:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4577,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3527:20:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":4578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3485:62:32","trueExpression":{"components":[{"id":4572,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4557,"src":"3505:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4573,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4559,"src":"3515:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4574,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3504:20:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"3462:85:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4580,"nodeType":"ExpressionStatement","src":"3462:85:32"}]},"documentation":{"id":4525,"nodeType":"StructuredDocumentation","src":"2597:465:32","text":"@notice Calculates the classic address for a pair and fetches the reserves for each token\n @param factory The address of the classic factory\n @param initCodeHash The hash of the pair initcode\n @param tokenA One of the tokens in the pair\n @param tokenB The other token in the pair\n @return pair The resultant classic pair address\n @return reserveA The reserves for tokenA\n @return reserveB The reserves for tokenB"},"id":4582,"implemented":true,"kind":"function","modifiers":[],"name":"pairAndReservesFor","nameLocation":"3076:18:32","nodeType":"FunctionDefinition","parameters":{"id":4534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4527,"mutability":"mutable","name":"factory","nameLocation":"3103:7:32","nodeType":"VariableDeclaration","scope":4582,"src":"3095:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4526,"name":"address","nodeType":"ElementaryTypeName","src":"3095:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4529,"mutability":"mutable","name":"initCodeHash","nameLocation":"3120:12:32","nodeType":"VariableDeclaration","scope":4582,"src":"3112:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4528,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3112:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4531,"mutability":"mutable","name":"tokenA","nameLocation":"3142:6:32","nodeType":"VariableDeclaration","scope":4582,"src":"3134:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4530,"name":"address","nodeType":"ElementaryTypeName","src":"3134:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4533,"mutability":"mutable","name":"tokenB","nameLocation":"3158:6:32","nodeType":"VariableDeclaration","scope":4582,"src":"3150:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4532,"name":"address","nodeType":"ElementaryTypeName","src":"3150:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3094:71:32"},"returnParameters":{"id":4541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4536,"mutability":"mutable","name":"pair","nameLocation":"3220:4:32","nodeType":"VariableDeclaration","scope":4582,"src":"3212:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4535,"name":"address","nodeType":"ElementaryTypeName","src":"3212:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4538,"mutability":"mutable","name":"reserveA","nameLocation":"3234:8:32","nodeType":"VariableDeclaration","scope":4582,"src":"3226:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4537,"name":"uint256","nodeType":"ElementaryTypeName","src":"3226:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4540,"mutability":"mutable","name":"reserveB","nameLocation":"3252:8:32","nodeType":"VariableDeclaration","scope":4582,"src":"3244:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4539,"name":"uint256","nodeType":"ElementaryTypeName","src":"3244:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3211:50:32"},"scope":4788,"src":"3067:487:32","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4631,"nodeType":"Block","src":"4053:299:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4594,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"4067:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4080:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4067:14:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4597,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"4085:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4099:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4085:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4067:33:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4604,"nodeType":"IfStatement","src":"4063:63:32","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4601,"name":"InvalidReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"4109:15:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4109:17:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4603,"nodeType":"RevertStatement","src":"4102:24:32"}},{"assignments":[4606],"declarations":[{"constant":false,"id":4606,"mutability":"mutable","name":"amountInWithFee","nameLocation":"4144:15:32","nodeType":"VariableDeclaration","scope":4631,"src":"4136:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4605,"name":"uint256","nodeType":"ElementaryTypeName","src":"4136:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4610,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4607,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4585,"src":"4162:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"393937","id":4608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4173:3:32","typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"},"src":"4162:14:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4136:40:32"},{"assignments":[4612],"declarations":[{"constant":false,"id":4612,"mutability":"mutable","name":"numerator","nameLocation":"4194:9:32","nodeType":"VariableDeclaration","scope":4631,"src":"4186:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4611,"name":"uint256","nodeType":"ElementaryTypeName","src":"4186:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4616,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4613,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"4206:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4614,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"4224:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4206:28:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4186:48:32"},{"assignments":[4618],"declarations":[{"constant":false,"id":4618,"mutability":"mutable","name":"denominator","nameLocation":"4252:11:32","nodeType":"VariableDeclaration","scope":4631,"src":"4244:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4617,"name":"uint256","nodeType":"ElementaryTypeName","src":"4244:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4624,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4619,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"4266:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31303030","id":4620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4278:4:32","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"src":"4266:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4622,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"4285:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4266:34:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4244:56:32"},{"expression":{"id":4629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4625,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4592,"src":"4310:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4626,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"4322:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4627,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"4334:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4322:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4310:35:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4630,"nodeType":"ExpressionStatement","src":"4310:35:32"}]},"documentation":{"id":4583,"nodeType":"StructuredDocumentation","src":"3560:339:32","text":"@notice Given an input asset amount returns the maximum output amount of the other asset\n @param amountIn The token input amount\n @param reserveIn The reserves available of the input token\n @param reserveOut The reserves available of the output token\n @return amountOut The output amount of the output token"},"id":4632,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountOut","nameLocation":"3913:12:32","nodeType":"FunctionDefinition","parameters":{"id":4590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4585,"mutability":"mutable","name":"amountIn","nameLocation":"3934:8:32","nodeType":"VariableDeclaration","scope":4632,"src":"3926:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4584,"name":"uint256","nodeType":"ElementaryTypeName","src":"3926:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4587,"mutability":"mutable","name":"reserveIn","nameLocation":"3952:9:32","nodeType":"VariableDeclaration","scope":4632,"src":"3944:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4586,"name":"uint256","nodeType":"ElementaryTypeName","src":"3944:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4589,"mutability":"mutable","name":"reserveOut","nameLocation":"3971:10:32","nodeType":"VariableDeclaration","scope":4632,"src":"3963:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4588,"name":"uint256","nodeType":"ElementaryTypeName","src":"3963:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3925:57:32"},"returnParameters":{"id":4593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4592,"mutability":"mutable","name":"amountOut","nameLocation":"4038:9:32","nodeType":"VariableDeclaration","scope":4632,"src":"4030:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4591,"name":"uint256","nodeType":"ElementaryTypeName","src":"4030:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4029:19:32"},"scope":4788,"src":"3904:448:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4681,"nodeType":"Block","src":"4852:250:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4644,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"4866:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4879:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4866:14:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4647,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"4884:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4898:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4884:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4866:33:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4654,"nodeType":"IfStatement","src":"4862:63:32","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4651,"name":"InvalidReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"4908:15:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4908:17:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4653,"nodeType":"RevertStatement","src":"4901:24:32"}},{"assignments":[4656],"declarations":[{"constant":false,"id":4656,"mutability":"mutable","name":"numerator","nameLocation":"4943:9:32","nodeType":"VariableDeclaration","scope":4681,"src":"4935:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4655,"name":"uint256","nodeType":"ElementaryTypeName","src":"4935:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4662,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4657,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"4955:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4658,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"4967:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4955:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31303030","id":4660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4979:4:32","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"src":"4955:28:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4935:48:32"},{"assignments":[4664],"declarations":[{"constant":false,"id":4664,"mutability":"mutable","name":"denominator","nameLocation":"5001:11:32","nodeType":"VariableDeclaration","scope":4681,"src":"4993:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4663,"name":"uint256","nodeType":"ElementaryTypeName","src":"4993:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4671,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4665,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"5016:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4666,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"5029:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5016:22:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5015:24:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"393937","id":4669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5042:3:32","typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"},"src":"5015:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4993:52:32"},{"expression":{"id":4679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4672,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"5055:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4673,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4656,"src":"5067:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4674,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4664,"src":"5079:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5067:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4676,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5066:25:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5094:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5066:29:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5055:40:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4680,"nodeType":"ExpressionStatement","src":"5055:40:32"}]},"documentation":{"id":4633,"nodeType":"StructuredDocumentation","src":"4358:341:32","text":"@notice Returns the input amount needed for a desired output amount in a single-hop trade\n @param amountOut The desired output amount\n @param reserveIn The reserves available of the input token\n @param reserveOut The reserves available of the output token\n @return amountIn The input amount of the input token"},"id":4682,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountIn","nameLocation":"4713:11:32","nodeType":"FunctionDefinition","parameters":{"id":4640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4635,"mutability":"mutable","name":"amountOut","nameLocation":"4733:9:32","nodeType":"VariableDeclaration","scope":4682,"src":"4725:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4634,"name":"uint256","nodeType":"ElementaryTypeName","src":"4725:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4637,"mutability":"mutable","name":"reserveIn","nameLocation":"4752:9:32","nodeType":"VariableDeclaration","scope":4682,"src":"4744:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4636,"name":"uint256","nodeType":"ElementaryTypeName","src":"4744:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4639,"mutability":"mutable","name":"reserveOut","nameLocation":"4771:10:32","nodeType":"VariableDeclaration","scope":4682,"src":"4763:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4638,"name":"uint256","nodeType":"ElementaryTypeName","src":"4763:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4724:58:32"},"returnParameters":{"id":4643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4642,"mutability":"mutable","name":"amountIn","nameLocation":"4838:8:32","nodeType":"VariableDeclaration","scope":4682,"src":"4830:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4641,"name":"uint256","nodeType":"ElementaryTypeName","src":"4830:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4829:18:32"},"scope":4788,"src":"4704:398:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4758,"nodeType":"Block","src":"5723:390:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4699,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"5737:4:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5742:6:32","memberName":"length","nodeType":"MemberAccess","src":"5737:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":4701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5751:1:32","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5737:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4706,"nodeType":"IfStatement","src":"5733:41:32","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4703,"name":"InvalidPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4411,"src":"5761:11:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5761:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4705,"nodeType":"RevertStatement","src":"5754:20:32"}},{"expression":{"id":4709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4707,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"5784:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4708,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"5793:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5784:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4710,"nodeType":"ExpressionStatement","src":"5784:18:32"},{"body":{"id":4756,"nodeType":"Block","src":"5858:249:32","statements":[{"assignments":[4725],"declarations":[{"constant":false,"id":4725,"mutability":"mutable","name":"reserveIn","nameLocation":"5880:9:32","nodeType":"VariableDeclaration","scope":4756,"src":"5872:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4724,"name":"uint256","nodeType":"ElementaryTypeName","src":"5872:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4726,"nodeType":"VariableDeclarationStatement","src":"5872:17:32"},{"assignments":[4728],"declarations":[{"constant":false,"id":4728,"mutability":"mutable","name":"reserveOut","nameLocation":"5911:10:32","nodeType":"VariableDeclaration","scope":4756,"src":"5903:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4727,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4729,"nodeType":"VariableDeclarationStatement","src":"5903:18:32"},{"expression":{"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4730,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"5937:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4731,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"5943:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4732,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4728,"src":"5954:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4733,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5936:29:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$","typeString":"tuple(address,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4735,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"5987:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4736,"name":"initCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4687,"src":"5996:12:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":4737,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"6010:4:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4741,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4738,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"6015:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6019:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6015:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6010:11:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":4742,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"6023:4:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4744,"indexExpression":{"id":4743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"6028:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6023:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4734,"name":"pairAndReservesFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"5968:18:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_address_$returns$_t_address_$_t_uint256_$_t_uint256_$","typeString":"function (address,bytes32,address,address) view returns (address,uint256,uint256)"}},"id":4745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5968:63:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$","typeString":"tuple(address,uint256,uint256)"}},"src":"5936:95:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4747,"nodeType":"ExpressionStatement","src":"5936:95:32"},{"expression":{"id":4754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4748,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"6045:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4750,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"6066:6:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4751,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"6074:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4752,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4728,"src":"6085:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4749,"name":"getAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4682,"src":"6054:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6054:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6045:51:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4755,"nodeType":"ExpressionStatement","src":"6045:51:32"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4718,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"5846:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5850:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5846:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4757,"initializationExpression":{"assignments":[4712],"declarations":[{"constant":false,"id":4712,"mutability":"mutable","name":"i","nameLocation":"5825:1:32","nodeType":"VariableDeclaration","scope":4757,"src":"5817:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4711,"name":"uint256","nodeType":"ElementaryTypeName","src":"5817:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4717,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4713,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"5829:4:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5834:6:32","memberName":"length","nodeType":"MemberAccess","src":"5829:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5843:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5829:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5817:27:32"},"loopExpression":{"expression":{"id":4722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"5853:3:32","subExpression":{"id":4721,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"5853:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4723,"nodeType":"ExpressionStatement","src":"5853:3:32"},"nodeType":"ForStatement","src":"5812:295:32"}]},"documentation":{"id":4683,"nodeType":"StructuredDocumentation","src":"5108:419:32","text":"@notice Returns the input amount needed for a desired output amount in a multi-hop trade\n @param factory The address of the classic factory\n @param initCodeHash The hash of the pair initcode\n @param amountOut The desired output amount\n @param path The path of the multi-hop trade\n @return amount The input amount of the input token\n @return pair The first pair in the trade"},"id":4759,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountInMultihop","nameLocation":"5541:19:32","nodeType":"FunctionDefinition","parameters":{"id":4693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4685,"mutability":"mutable","name":"factory","nameLocation":"5569:7:32","nodeType":"VariableDeclaration","scope":4759,"src":"5561:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4684,"name":"address","nodeType":"ElementaryTypeName","src":"5561:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4687,"mutability":"mutable","name":"initCodeHash","nameLocation":"5586:12:32","nodeType":"VariableDeclaration","scope":4759,"src":"5578:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5578:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4689,"mutability":"mutable","name":"amountOut","nameLocation":"5608:9:32","nodeType":"VariableDeclaration","scope":4759,"src":"5600:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4688,"name":"uint256","nodeType":"ElementaryTypeName","src":"5600:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4692,"mutability":"mutable","name":"path","nameLocation":"5636:4:32","nodeType":"VariableDeclaration","scope":4759,"src":"5619:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4690,"name":"address","nodeType":"ElementaryTypeName","src":"5619:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4691,"nodeType":"ArrayTypeName","src":"5619:9:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5560:81:32"},"returnParameters":{"id":4698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4695,"mutability":"mutable","name":"amount","nameLocation":"5697:6:32","nodeType":"VariableDeclaration","scope":4759,"src":"5689:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4694,"name":"uint256","nodeType":"ElementaryTypeName","src":"5689:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4697,"mutability":"mutable","name":"pair","nameLocation":"5713:4:32","nodeType":"VariableDeclaration","scope":4759,"src":"5705:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4696,"name":"address","nodeType":"ElementaryTypeName","src":"5705:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5688:30:32"},"scope":4788,"src":"5532:581:32","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4786,"nodeType":"Block","src":"6494:89:32","statements":[{"expression":{"id":4784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4771,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4767,"src":"6505:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4772,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4769,"src":"6513:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4773,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6504:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4774,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"6523:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4775,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"6532:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6523:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":4780,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"6561:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4781,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"6569:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4782,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6560:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6523:53:32","trueExpression":{"components":[{"id":4777,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"6542:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4778,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"6550:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4779,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6541:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"6504:72:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4785,"nodeType":"ExpressionStatement","src":"6504:72:32"}]},"documentation":{"id":4760,"nodeType":"StructuredDocumentation","src":"6119:263:32","text":"@notice Sorts two tokens to return token0 and token1\n @param tokenA The first token to sort\n @param tokenB The other token to sort\n @return token0 The smaller token by address value\n @return token1 The larger token by address value"},"id":4787,"implemented":true,"kind":"function","modifiers":[],"name":"sortTokens","nameLocation":"6396:10:32","nodeType":"FunctionDefinition","parameters":{"id":4765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4762,"mutability":"mutable","name":"tokenA","nameLocation":"6415:6:32","nodeType":"VariableDeclaration","scope":4787,"src":"6407:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4761,"name":"address","nodeType":"ElementaryTypeName","src":"6407:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4764,"mutability":"mutable","name":"tokenB","nameLocation":"6431:6:32","nodeType":"VariableDeclaration","scope":4787,"src":"6423:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4763,"name":"address","nodeType":"ElementaryTypeName","src":"6423:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6406:32:32"},"returnParameters":{"id":4770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4767,"mutability":"mutable","name":"token0","nameLocation":"6470:6:32","nodeType":"VariableDeclaration","scope":4787,"src":"6462:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4766,"name":"address","nodeType":"ElementaryTypeName","src":"6462:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4769,"mutability":"mutable","name":"token1","nameLocation":"6486:6:32","nodeType":"VariableDeclaration","scope":4787,"src":"6478:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4768,"name":"address","nodeType":"ElementaryTypeName","src":"6478:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6461:32:32"},"scope":4788,"src":"6387:196:32","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4789,"src":"264:6321:32","usedErrors":[4409,4411]}],"src":"45:6541:32"},"id":32},"contracts/modules/astra/classic/ClassicSwapRouter.sol":{"ast":{"absolutePath":"contracts/modules/astra/classic/ClassicSwapRouter.sol","exportedSymbols":{"AstraClassicLibrary":[4788],"ClassicSwapRouter":[5134],"Constants":[3067],"ERC20":[8531],"IAstraPair":[773],"Payments":[3544],"Permit2Payments":[3666],"RouterImmutables":[2788]},"id":5135,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4790,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:33"},{"absolutePath":"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol","file":"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol","id":4792,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5135,"sourceUnit":774,"src":"71:92:33","symbolAliases":[{"foreign":{"id":4791,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":773,"src":"79:10:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/astra/classic/AstraClassicLibrary.sol","file":"./AstraClassicLibrary.sol","id":4794,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5135,"sourceUnit":4789,"src":"164:62:33","symbolAliases":[{"foreign":{"id":4793,"name":"AstraClassicLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"172:19:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/base/RouterImmutables.sol","file":"../../../base/RouterImmutables.sol","id":4796,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5135,"sourceUnit":2789,"src":"227:68:33","symbolAliases":[{"foreign":{"id":4795,"name":"RouterImmutables","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"235:16:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/Payments.sol","file":"../../Payments.sol","id":4798,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5135,"sourceUnit":3545,"src":"296:44:33","symbolAliases":[{"foreign":{"id":4797,"name":"Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"304:8:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/modules/Permit2Payments.sol","file":"../../Permit2Payments.sol","id":4800,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5135,"sourceUnit":3667,"src":"341:58:33","symbolAliases":[{"foreign":{"id":4799,"name":"Permit2Payments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"349:15:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/Constants.sol","file":"../../../libraries/Constants.sol","id":4802,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5135,"sourceUnit":3068,"src":"400:59:33","symbolAliases":[{"foreign":{"id":4801,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"408:9:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":4804,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5135,"sourceUnit":8532,"src":"460:51:33","symbolAliases":[{"foreign":{"id":4803,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"468:5:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4806,"name":"RouterImmutables","nameLocations":["595:16:33"],"nodeType":"IdentifierPath","referencedDeclaration":2788,"src":"595:16:33"},"id":4807,"nodeType":"InheritanceSpecifier","src":"595:16:33"},{"baseName":{"id":4808,"name":"Permit2Payments","nameLocations":["613:15:33"],"nodeType":"IdentifierPath","referencedDeclaration":3666,"src":"613:15:33"},"id":4809,"nodeType":"InheritanceSpecifier","src":"613:15:33"}],"canonicalName":"ClassicSwapRouter","contractDependencies":[],"contractKind":"contract","documentation":{"id":4805,"nodeType":"StructuredDocumentation","src":"513:43:33","text":"@title Router for Astra Classic Trades"},"fullyImplemented":false,"id":5134,"linearizedBaseContracts":[5134,3666,3544,2788],"name":"ClassicSwapRouter","nameLocation":"574:17:33","nodeType":"ContractDefinition","nodes":[{"errorSelector":"689100ae","id":4811,"name":"ClassicTooLittleReceived","nameLocation":"641:24:33","nodeType":"ErrorDefinition","parameters":{"id":4810,"nodeType":"ParameterList","parameters":[],"src":"665:2:33"},"src":"635:33:33"},{"errorSelector":"c8ca61e7","id":4813,"name":"ClassicTooMuchRequested","nameLocation":"679:23:33","nodeType":"ErrorDefinition","parameters":{"id":4812,"nodeType":"ParameterList","parameters":[],"src":"702:2:33"},"src":"673:32:33"},{"errorSelector":"394060ac","id":4815,"name":"ClassicInvalidPath","nameLocation":"716:18:33","nodeType":"ErrorDefinition","parameters":{"id":4814,"nodeType":"ParameterList","parameters":[],"src":"734:2:33"},"src":"710:27:33"},{"body":{"id":4996,"nodeType":"Block","src":"831:1530:33","statements":[{"id":4995,"nodeType":"UncheckedBlock","src":"841:1514:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4825,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"869:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"874:6:33","memberName":"length","nodeType":"MemberAccess","src":"869:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":4827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"883:1:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"869:15:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4832,"nodeType":"IfStatement","src":"865:48:33","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4829,"name":"ClassicInvalidPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4815,"src":"893:18:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"893:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4831,"nodeType":"RevertStatement","src":"886:27:33"}},{"assignments":[4834,null],"declarations":[{"constant":false,"id":4834,"mutability":"mutable","name":"token0","nameLocation":"991:6:33","nodeType":"VariableDeclaration","scope":4995,"src":"983:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4833,"name":"address","nodeType":"ElementaryTypeName","src":"983:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":4844,"initialValue":{"arguments":[{"baseExpression":{"id":4837,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"1033:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4839,"indexExpression":{"hexValue":"30","id":4838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1038:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1033:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":4840,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"1042:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4842,"indexExpression":{"hexValue":"31","id":4841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1047:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1042:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4835,"name":"AstraClassicLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"1002:19:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraClassicLibrary_$4788_$","typeString":"type(library AstraClassicLibrary)"}},"id":4836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1022:10:33","memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":4787,"src":"1002:30:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1002:48:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"982:68:33"},{"assignments":[4846],"declarations":[{"constant":false,"id":4846,"mutability":"mutable","name":"finalPairIndex","nameLocation":"1072:14:33","nodeType":"VariableDeclaration","scope":4995,"src":"1064:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1064:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4851,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4847,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"1089:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1094:6:33","memberName":"length","nodeType":"MemberAccess","src":"1089:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1103:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1089:15:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1064:40:33"},{"assignments":[4853],"declarations":[{"constant":false,"id":4853,"mutability":"mutable","name":"penultimatePairIndex","nameLocation":"1126:20:33","nodeType":"VariableDeclaration","scope":4995,"src":"1118:28:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1118:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4857,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4854,"name":"finalPairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4846,"src":"1149:14:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1166:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1149:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1118:49:33"},{"body":{"id":4993,"nodeType":"Block","src":"1222:1123:33","statements":[{"assignments":[4868,4870],"declarations":[{"constant":false,"id":4868,"mutability":"mutable","name":"input","nameLocation":"1249:5:33","nodeType":"VariableDeclaration","scope":4993,"src":"1241:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4867,"name":"address","nodeType":"ElementaryTypeName","src":"1241:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4870,"mutability":"mutable","name":"output","nameLocation":"1264:6:33","nodeType":"VariableDeclaration","scope":4993,"src":"1256:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4869,"name":"address","nodeType":"ElementaryTypeName","src":"1256:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4880,"initialValue":{"components":[{"baseExpression":{"id":4871,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"1275:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4873,"indexExpression":{"id":4872,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1280:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1275:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":4874,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"1284:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4878,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4875,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1289:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1293:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1289:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1284:11:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4879,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1274:22:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"1240:56:33"},{"assignments":[4882,4884,null],"declarations":[{"constant":false,"id":4882,"mutability":"mutable","name":"reserve0","nameLocation":"1323:8:33","nodeType":"VariableDeclaration","scope":4993,"src":"1315:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1315:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4884,"mutability":"mutable","name":"reserve1","nameLocation":"1341:8:33","nodeType":"VariableDeclaration","scope":4993,"src":"1333:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1333:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":4890,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4886,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"1365:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4885,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":773,"src":"1354:10:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$773_$","typeString":"type(contract IAstraPair)"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1354:16:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$773","typeString":"contract IAstraPair"}},"id":4888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1371:11:33","memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":715,"src":"1354:28:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":4889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1354:30:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"1314:70:33"},{"assignments":[4892,4894],"declarations":[{"constant":false,"id":4892,"mutability":"mutable","name":"reserveInput","nameLocation":"1411:12:33","nodeType":"VariableDeclaration","scope":4993,"src":"1403:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4891,"name":"uint256","nodeType":"ElementaryTypeName","src":"1403:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4894,"mutability":"mutable","name":"reserveOutput","nameLocation":"1433:13:33","nodeType":"VariableDeclaration","scope":4993,"src":"1425:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4893,"name":"uint256","nodeType":"ElementaryTypeName","src":"1425:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4905,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4895,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4868,"src":"1470:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4896,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"1479:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1470:15:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":4901,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4884,"src":"1512:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4902,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4882,"src":"1522:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4903,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1511:20:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":4904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1470:61:33","trueExpression":{"components":[{"id":4898,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4882,"src":"1489:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4899,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4884,"src":"1499:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4900,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1488:20:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1402:129:33"},{"assignments":[4907],"declarations":[{"constant":false,"id":4907,"mutability":"mutable","name":"amountInput","nameLocation":"1557:11:33","nodeType":"VariableDeclaration","scope":4993,"src":"1549:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4906,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4916,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4912,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"1594:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":4909,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4868,"src":"1577:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4908,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"1571:5:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1571:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:9:33","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"1571:22:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1571:28:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4914,"name":"reserveInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4892,"src":"1602:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1571:43:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1549:65:33"},{"assignments":[4918],"declarations":[{"constant":false,"id":4918,"mutability":"mutable","name":"amountOutput","nameLocation":"1640:12:33","nodeType":"VariableDeclaration","scope":4993,"src":"1632:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4917,"name":"uint256","nodeType":"ElementaryTypeName","src":"1632:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4925,"initialValue":{"arguments":[{"id":4921,"name":"amountInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4907,"src":"1688:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4922,"name":"reserveInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4892,"src":"1701:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4923,"name":"reserveOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4894,"src":"1715:13:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4919,"name":"AstraClassicLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"1655:19:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraClassicLibrary_$4788_$","typeString":"type(library AstraClassicLibrary)"}},"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1675:12:33","memberName":"getAmountOut","nodeType":"MemberAccess","referencedDeclaration":4632,"src":"1655:32:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1655:74:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1632:97:33"},{"assignments":[4927,4929],"declarations":[{"constant":false,"id":4927,"mutability":"mutable","name":"amount0Out","nameLocation":"1756:10:33","nodeType":"VariableDeclaration","scope":4993,"src":"1748:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4926,"name":"uint256","nodeType":"ElementaryTypeName","src":"1748:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4929,"mutability":"mutable","name":"amount1Out","nameLocation":"1776:10:33","nodeType":"VariableDeclaration","scope":4993,"src":"1768:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4946,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4930,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4868,"src":"1810:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4931,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"1819:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1810:15:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":4939,"name":"amountOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4918,"src":"1858:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":4942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1880:1:33","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":4941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1872:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4940,"name":"uint256","nodeType":"ElementaryTypeName","src":"1872:7:33","typeDescriptions":{}}},"id":4943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4944,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1857:26:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":4945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1810:73:33","trueExpression":{"components":[{"arguments":[{"hexValue":"30","id":4935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1837:1:33","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":4934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1829:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4933,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:33","typeDescriptions":{}}},"id":4936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4937,"name":"amountOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4918,"src":"1841:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4938,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1828:26:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1747:136:33"},{"assignments":[4948],"declarations":[{"constant":false,"id":4948,"mutability":"mutable","name":"nextPair","nameLocation":"1909:8:33","nodeType":"VariableDeclaration","scope":4993,"src":"1901:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4947,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4949,"nodeType":"VariableDeclarationStatement","src":"1901:16:33"},{"expression":{"id":4974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4950,"name":"nextPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"1936:8:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4951,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"1946:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4952,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1935:18:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4953,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1956:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4954,"name":"penultimatePairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"1960:20:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1956:24:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":4967,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4820,"src":"2188:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2207:1:33","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":4969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2199:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4968,"name":"address","nodeType":"ElementaryTypeName","src":"2199:7:33","typeDescriptions":{}}},"id":4971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2199:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4972,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2187:23:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"id":4973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1956:254:33","trueExpression":{"arguments":[{"id":4958,"name":"ASTRA_CLASSIC_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"2065:21:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4959,"name":"ASTRA_CLASSIC_PAIR_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"2088:33:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4960,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4870,"src":"2123:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":4961,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"2131:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4965,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4962,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"2136:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":4963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2140:1:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2136:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2131:11:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4956,"name":"AstraClassicLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"2003:19:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraClassicLibrary_$4788_$","typeString":"type(library AstraClassicLibrary)"}},"id":4957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2023:16:33","memberName":"pairAndToken0For","nodeType":"MemberAccess","referencedDeclaration":4482,"src":"2003:36:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,bytes32,address,address) pure returns (address,address)"}},"id":4966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2003:161:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"1935:275:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4975,"nodeType":"ExpressionStatement","src":"1935:275:33"},{"expression":{"arguments":[{"id":4980,"name":"amount0Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"2250:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4981,"name":"amount1Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4929,"src":"2262:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4982,"name":"nextPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"2274:8:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:1:33","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":4984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2284:9:33","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4983,"name":"bytes","nodeType":"ElementaryTypeName","src":"2288:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2284:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":4977,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"2239:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4976,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":773,"src":"2228:10:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$773_$","typeString":"type(contract IAstraPair)"}},"id":4978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:16:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$773","typeString":"contract IAstraPair"}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2245:4:33","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":757,"src":"2228:21:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,address,bytes memory) external"}},"id":4987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:69:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4988,"nodeType":"ExpressionStatement","src":"2228:69:33"},{"expression":{"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4989,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"2315:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4990,"name":"nextPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"2322:8:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2315:15:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4992,"nodeType":"ExpressionStatement","src":"2315:15:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1197:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4862,"name":"finalPairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4846,"src":"1201:14:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1197:18:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4994,"initializationExpression":{"assignments":[4859],"declarations":[{"constant":false,"id":4859,"mutability":"mutable","name":"i","nameLocation":"1194:1:33","nodeType":"VariableDeclaration","scope":4994,"src":"1186:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4858,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4860,"nodeType":"VariableDeclarationStatement","src":"1186:9:33"},"loopExpression":{"expression":{"id":4865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1217:3:33","subExpression":{"id":4864,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1217:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4866,"nodeType":"ExpressionStatement","src":"1217:3:33"},"nodeType":"ForStatement","src":"1181:1164:33"}]}]},"id":4997,"implemented":true,"kind":"function","modifiers":[],"name":"_classicSwap","nameLocation":"752:12:33","nodeType":"FunctionDefinition","parameters":{"id":4823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4818,"mutability":"mutable","name":"path","nameLocation":"784:4:33","nodeType":"VariableDeclaration","scope":4997,"src":"765:23:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4816,"name":"address","nodeType":"ElementaryTypeName","src":"765:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4817,"nodeType":"ArrayTypeName","src":"765:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4820,"mutability":"mutable","name":"recipient","nameLocation":"798:9:33","nodeType":"VariableDeclaration","scope":4997,"src":"790:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4819,"name":"address","nodeType":"ElementaryTypeName","src":"790:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4822,"mutability":"mutable","name":"pair","nameLocation":"817:4:33","nodeType":"VariableDeclaration","scope":4997,"src":"809:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4821,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"764:58:33"},"returnParameters":{"id":4824,"nodeType":"ParameterList","parameters":[],"src":"831:0:33"},"scope":5134,"src":"743:1618:33","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5082,"nodeType":"Block","src":"2951:692:33","statements":[{"assignments":[5013],"declarations":[{"constant":false,"id":5013,"mutability":"mutable","name":"firstPair","nameLocation":"2969:9:33","nodeType":"VariableDeclaration","scope":5082,"src":"2961:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5012,"name":"address","nodeType":"ElementaryTypeName","src":"2961:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5025,"initialValue":{"arguments":[{"id":5016,"name":"ASTRA_CLASSIC_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"3021:21:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5017,"name":"ASTRA_CLASSIC_PAIR_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"3044:33:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":5018,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"3079:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":5020,"indexExpression":{"hexValue":"30","id":5019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3084:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3079:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":5021,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"3088:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":5023,"indexExpression":{"hexValue":"31","id":5022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3093:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3088:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5014,"name":"AstraClassicLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"2993:19:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraClassicLibrary_$4788_$","typeString":"type(library AstraClassicLibrary)"}},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3013:7:33","memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":4444,"src":"2993:27:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address,address) pure returns (address)"}},"id":5024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2993:103:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2961:135:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5026,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5002,"src":"3123:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":5027,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"3135:9:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$3067_$","typeString":"type(library Constants)"}},"id":5028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3145:12:33","memberName":"ALREADY_PAID","nodeType":"MemberAccess","referencedDeclaration":3019,"src":"3135:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3123:34:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5040,"nodeType":"IfStatement","src":"3106:208:33","trueBody":{"id":5039,"nodeType":"Block","src":"3232:82:33","statements":[{"expression":{"arguments":[{"baseExpression":{"id":5031,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"3267:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":5033,"indexExpression":{"hexValue":"30","id":5032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3272:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3267:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5034,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5009,"src":"3276:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5035,"name":"firstPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5013,"src":"3283:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5036,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5002,"src":"3294:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5030,"name":"payOrPermit2Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3665,"src":"3246:20:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3246:57:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5038,"nodeType":"ExpressionStatement","src":"3246:57:33"}]}},{"assignments":[5043],"declarations":[{"constant":false,"id":5043,"mutability":"mutable","name":"tokenOut","nameLocation":"3330:8:33","nodeType":"VariableDeclaration","scope":5082,"src":"3324:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":5042,"nodeType":"UserDefinedTypeName","pathNode":{"id":5041,"name":"ERC20","nameLocations":["3324:5:33"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"3324:5:33"},"referencedDeclaration":8531,"src":"3324:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"}],"id":5052,"initialValue":{"arguments":[{"baseExpression":{"id":5045,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"3347:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":5050,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5046,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"3352:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3357:6:33","memberName":"length","nodeType":"MemberAccess","src":"3352:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3366:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3352:15:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3347:21:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5044,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"3341:5:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":5051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3341:28:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"nodeType":"VariableDeclarationStatement","src":"3324:45:33"},{"assignments":[5054],"declarations":[{"constant":false,"id":5054,"mutability":"mutable","name":"balanceBefore","nameLocation":"3387:13:33","nodeType":"VariableDeclaration","scope":5082,"src":"3379:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5053,"name":"uint256","nodeType":"ElementaryTypeName","src":"3379:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5059,"initialValue":{"arguments":[{"id":5057,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"3422:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5055,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5043,"src":"3403:8:33","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":5056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3412:9:33","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"3403:18:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3403:29:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3379:53:33"},{"expression":{"arguments":[{"id":5061,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"3456:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":5062,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"3462:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5063,"name":"firstPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5013,"src":"3473:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5060,"name":"_classicSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4997,"src":"3443:12:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$_t_address_$returns$__$","typeString":"function (address[] calldata,address,address)"}},"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3443:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5065,"nodeType":"ExpressionStatement","src":"3443:40:33"},{"assignments":[5067],"declarations":[{"constant":false,"id":5067,"mutability":"mutable","name":"amountOut","nameLocation":"3502:9:33","nodeType":"VariableDeclaration","scope":5082,"src":"3494:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5066,"name":"uint256","nodeType":"ElementaryTypeName","src":"3494:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5074,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5070,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"3533:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5068,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5043,"src":"3514:8:33","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3523:9:33","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"3514:18:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":5071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3514:29:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5072,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"3546:13:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3514:45:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3494:65:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5075,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5067,"src":"3573:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5076,"name":"amountOutMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"3585:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3573:28:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5081,"nodeType":"IfStatement","src":"3569:67:33","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5078,"name":"ClassicTooLittleReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4811,"src":"3610:24:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3610:26:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5080,"nodeType":"RevertStatement","src":"3603:33:33"}}]},"documentation":{"id":4998,"nodeType":"StructuredDocumentation","src":"2367:390:33","text":"@notice Performs a Astra Classic exact input swap\n @param recipient The recipient of the output tokens\n @param amountIn The amount of input tokens for the trade\n @param amountOutMinimum The minimum desired amount of output tokens\n @param path The path of the trade as an array of token addresses\n @param payer The address that will be paying the input"},"id":5083,"implemented":true,"kind":"function","modifiers":[],"name":"classicSwapExactInput","nameLocation":"2771:21:33","nodeType":"FunctionDefinition","parameters":{"id":5010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5000,"mutability":"mutable","name":"recipient","nameLocation":"2810:9:33","nodeType":"VariableDeclaration","scope":5083,"src":"2802:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4999,"name":"address","nodeType":"ElementaryTypeName","src":"2802:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5002,"mutability":"mutable","name":"amountIn","nameLocation":"2837:8:33","nodeType":"VariableDeclaration","scope":5083,"src":"2829:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5001,"name":"uint256","nodeType":"ElementaryTypeName","src":"2829:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5004,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"2863:16:33","nodeType":"VariableDeclaration","scope":5083,"src":"2855:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5003,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5007,"mutability":"mutable","name":"path","nameLocation":"2908:4:33","nodeType":"VariableDeclaration","scope":5083,"src":"2889:23:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5005,"name":"address","nodeType":"ElementaryTypeName","src":"2889:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5006,"nodeType":"ArrayTypeName","src":"2889:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5009,"mutability":"mutable","name":"payer","nameLocation":"2930:5:33","nodeType":"VariableDeclaration","scope":5083,"src":"2922:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5008,"name":"address","nodeType":"ElementaryTypeName","src":"2922:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2792:149:33"},"returnParameters":{"id":5011,"nodeType":"ParameterList","parameters":[],"src":"2951:0:33"},"scope":5134,"src":"2762:881:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5132,"nodeType":"Block","src":"4246:385:33","statements":[{"assignments":[5099,5101],"declarations":[{"constant":false,"id":5099,"mutability":"mutable","name":"amountIn","nameLocation":"4265:8:33","nodeType":"VariableDeclaration","scope":5132,"src":"4257:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5098,"name":"uint256","nodeType":"ElementaryTypeName","src":"4257:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5101,"mutability":"mutable","name":"firstPair","nameLocation":"4283:9:33","nodeType":"VariableDeclaration","scope":5132,"src":"4275:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5100,"name":"address","nodeType":"ElementaryTypeName","src":"4275:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5109,"initialValue":{"arguments":[{"id":5104,"name":"ASTRA_CLASSIC_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"4349:21:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5105,"name":"ASTRA_CLASSIC_PAIR_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"4372:33:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5106,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5088,"src":"4407:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5107,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5093,"src":"4418:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"id":5102,"name":"AstraClassicLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"4296:19:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraClassicLibrary_$4788_$","typeString":"type(library AstraClassicLibrary)"}},"id":5103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4316:19:33","memberName":"getAmountInMultihop","nodeType":"MemberAccess","referencedDeclaration":4759,"src":"4296:39:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_uint256_$_t_address_$","typeString":"function (address,bytes32,uint256,address[] memory) view returns (uint256,address)"}},"id":5108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4296:136:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"VariableDeclarationStatement","src":"4256:176:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5110,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5099,"src":"4446:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5111,"name":"amountInMaximum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5090,"src":"4457:15:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4446:26:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5116,"nodeType":"IfStatement","src":"4442:64:33","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5113,"name":"ClassicTooMuchRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4813,"src":"4481:23:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4481:25:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5115,"nodeType":"RevertStatement","src":"4474:32:33"}},{"expression":{"arguments":[{"baseExpression":{"id":5118,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5093,"src":"4538:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":5120,"indexExpression":{"hexValue":"30","id":5119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4543:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4538:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5121,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5095,"src":"4547:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5122,"name":"firstPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"4554:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5123,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5099,"src":"4565:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5117,"name":"payOrPermit2Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3665,"src":"4517:20:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4517:57:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5125,"nodeType":"ExpressionStatement","src":"4517:57:33"},{"expression":{"arguments":[{"id":5127,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5093,"src":"4597:4:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":5128,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5086,"src":"4603:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5129,"name":"firstPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"4614:9:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5126,"name":"_classicSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4997,"src":"4584:12:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$_t_address_$returns$__$","typeString":"function (address[] calldata,address,address)"}},"id":5130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4584:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5131,"nodeType":"ExpressionStatement","src":"4584:40:33"}]},"documentation":{"id":5084,"nodeType":"StructuredDocumentation","src":"3649:402:33","text":"@notice Performs a Astra Classic exact output swap\n @param recipient The recipient of the output tokens\n @param amountOut The amount of output tokens to receive for the trade\n @param amountInMaximum The maximum desired amount of input tokens\n @param path The path of the trade as an array of token addresses\n @param payer The address that will be paying the input"},"id":5133,"implemented":true,"kind":"function","modifiers":[],"name":"classicSwapExactOutput","nameLocation":"4065:22:33","nodeType":"FunctionDefinition","parameters":{"id":5096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5086,"mutability":"mutable","name":"recipient","nameLocation":"4105:9:33","nodeType":"VariableDeclaration","scope":5133,"src":"4097:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5085,"name":"address","nodeType":"ElementaryTypeName","src":"4097:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5088,"mutability":"mutable","name":"amountOut","nameLocation":"4132:9:33","nodeType":"VariableDeclaration","scope":5133,"src":"4124:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5087,"name":"uint256","nodeType":"ElementaryTypeName","src":"4124:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5090,"mutability":"mutable","name":"amountInMaximum","nameLocation":"4159:15:33","nodeType":"VariableDeclaration","scope":5133,"src":"4151:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5089,"name":"uint256","nodeType":"ElementaryTypeName","src":"4151:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5093,"mutability":"mutable","name":"path","nameLocation":"4203:4:33","nodeType":"VariableDeclaration","scope":5133,"src":"4184:23:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5091,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5092,"nodeType":"ArrayTypeName","src":"4184:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5095,"mutability":"mutable","name":"payer","nameLocation":"4225:5:33","nodeType":"VariableDeclaration","scope":5133,"src":"4217:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5094,"name":"address","nodeType":"ElementaryTypeName","src":"4217:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4087:149:33"},"returnParameters":{"id":5097,"nodeType":"ParameterList","parameters":[],"src":"4246:0:33"},"scope":5134,"src":"4056:575:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5135,"src":"556:4077:33","usedErrors":[3093,3095,3097,3099,3564,4811,4813,4815]}],"src":"45:4589:33"},"id":33},"contracts/test/ExampleModule.sol":{"ast":{"absolutePath":"contracts/test/ExampleModule.sol","exportedSymbols":{"ExampleModule":[5158]},"id":5159,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5136,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:34"},{"abstract":false,"baseContracts":[],"canonicalName":"ExampleModule","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5158,"linearizedBaseContracts":[5158],"name":"ExampleModule","nameLocation":"80:13:34","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"f173516ab337f2e7729ba9acd5771deab6be31f2ad8d5dd42dab5269e61701b9","id":5140,"name":"ExampleModuleEvent","nameLocation":"106:18:34","nodeType":"EventDefinition","parameters":{"id":5139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5138,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"132:7:34","nodeType":"VariableDeclaration","scope":5140,"src":"125:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5137,"name":"string","nodeType":"ElementaryTypeName","src":"125:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"124:16:34"},"src":"100:41:34"},{"errorSelector":"39492f34","id":5142,"name":"CauseRevert","nameLocation":"153:11:34","nodeType":"ErrorDefinition","parameters":{"id":5141,"nodeType":"ParameterList","parameters":[],"src":"164:2:34"},"src":"147:20:34"},{"body":{"id":5149,"nodeType":"Block","src":"200:53:34","statements":[{"eventCall":{"arguments":[{"hexValue":"746573744576656e74","id":5146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"234:11:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_13fbfd38c1f17ffbb8a4d14101e0a62593668285d69b258cfe9eb119a31a4533","typeString":"literal_string \"testEvent\""},"value":"testEvent"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_13fbfd38c1f17ffbb8a4d14101e0a62593668285d69b258cfe9eb119a31a4533","typeString":"literal_string \"testEvent\""}],"id":5145,"name":"ExampleModuleEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"215:18:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"215:31:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5148,"nodeType":"EmitStatement","src":"210:36:34"}]},"functionSelector":"a5fe0872","id":5150,"implemented":true,"kind":"function","modifiers":[],"name":"logEvent","nameLocation":"182:8:34","nodeType":"FunctionDefinition","parameters":{"id":5143,"nodeType":"ParameterList","parameters":[],"src":"190:2:34"},"returnParameters":{"id":5144,"nodeType":"ParameterList","parameters":[],"src":"200:0:34"},"scope":5158,"src":"173:80:34","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5156,"nodeType":"Block","src":"294:37:34","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5153,"name":"CauseRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5142,"src":"311:11:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"311:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5155,"nodeType":"RevertStatement","src":"304:20:34"}]},"functionSelector":"67192b63","id":5157,"implemented":true,"kind":"function","modifiers":[],"name":"causeRevert","nameLocation":"268:11:34","nodeType":"FunctionDefinition","parameters":{"id":5151,"nodeType":"ParameterList","parameters":[],"src":"279:2:34"},"returnParameters":{"id":5152,"nodeType":"ParameterList","parameters":[],"src":"294:0:34"},"scope":5158,"src":"259:72:34","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":5159,"src":"71:262:34","usedErrors":[5142]}],"src":"45:289:34"},"id":34},"contracts/test/ImportsForTypechain.sol":{"ast":{"absolutePath":"contracts/test/ImportsForTypechain.sol","exportedSymbols":{"ERC1155":[8099],"ImportsForTypechain":[5169],"Permit2":[5950]},"id":5170,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5160,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:35"},{"absolutePath":"solmate/src/tokens/ERC1155.sol","file":"solmate/src/tokens/ERC1155.sol","id":5162,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5170,"sourceUnit":8144,"src":"71:55:35","symbolAliases":[{"foreign":{"id":5161,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"79:7:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/Permit2.sol","file":"permit2/src/Permit2.sol","id":5164,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5170,"sourceUnit":5951,"src":"127:48:35","symbolAliases":[{"foreign":{"id":5163,"name":"Permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"135:7:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5165,"name":"ERC1155","nameLocations":["359:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":8099,"src":"359:7:35"},"id":5166,"nodeType":"InheritanceSpecifier","src":"359:7:35"},{"baseName":{"id":5167,"name":"Permit2","nameLocations":["368:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":5950,"src":"368:7:35"},"id":5168,"nodeType":"InheritanceSpecifier","src":"368:7:35"}],"canonicalName":"ImportsForTypechain","contractDependencies":[],"contractKind":"contract","fullyImplemented":false,"id":5169,"linearizedBaseContracts":[5169,5950,5842,6398,5938,6600,6745,8099],"name":"ImportsForTypechain","nameLocation":"336:19:35","nodeType":"ContractDefinition","nodes":[],"scope":5170,"src":"318:60:35","usedErrors":[5957,5960,6406,6411,6414,6621,6624,7302,7305,7308,7311]}],"src":"45:334:35"},"id":35},"contracts/test/MintableERC20.sol":{"ast":{"absolutePath":"contracts/test/MintableERC20.sol","exportedSymbols":{"ERC20":[8531],"MintableERC20":[5215]},"id":5216,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5171,"literals":["solidity","^","0.8",".15"],"nodeType":"PragmaDirective","src":"45:24:36"},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":5173,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5216,"sourceUnit":8532,"src":"71:51:36","symbolAliases":[{"foreign":{"id":5172,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"79:5:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5174,"name":"ERC20","nameLocations":["150:5:36"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"150:5:36"},"id":5175,"nodeType":"InheritanceSpecifier","src":"150:5:36"}],"canonicalName":"MintableERC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5215,"linearizedBaseContracts":[5215,8531],"name":"MintableERC20","nameLocation":"133:13:36","nodeType":"ContractDefinition","nodes":[{"body":{"id":5195,"nodeType":"Block","src":"262:47:36","statements":[{"expression":{"arguments":[{"expression":{"id":5190,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"277:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"281:6:36","memberName":"sender","nodeType":"MemberAccess","src":"277:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5192,"name":"amountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5181,"src":"289:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5189,"name":"mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5214,"src":"272:4:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"272:30:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5194,"nodeType":"ExpressionStatement","src":"272:30:36"}]},"id":5196,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5184,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5177,"src":"244:4:36","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5185,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5179,"src":"250:6:36","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3138","id":5186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"258:2:36","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"}],"id":5187,"kind":"baseConstructorSpecifier","modifierName":{"id":5183,"name":"ERC20","nameLocations":["238:5:36"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"238:5:36"},"nodeType":"ModifierInvocation","src":"238:23:36"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5177,"mutability":"mutable","name":"name","nameLocation":"188:4:36","nodeType":"VariableDeclaration","scope":5196,"src":"174:18:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5176,"name":"string","nodeType":"ElementaryTypeName","src":"174:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5179,"mutability":"mutable","name":"symbol","nameLocation":"208:6:36","nodeType":"VariableDeclaration","scope":5196,"src":"194:20:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5178,"name":"string","nodeType":"ElementaryTypeName","src":"194:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5181,"mutability":"mutable","name":"amountToMint","nameLocation":"224:12:36","nodeType":"VariableDeclaration","scope":5196,"src":"216:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5180,"name":"uint256","nodeType":"ElementaryTypeName","src":"216:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"173:64:36"},"returnParameters":{"id":5188,"nodeType":"ParameterList","parameters":[],"src":"262:0:36"},"scope":5215,"src":"162:147:36","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5213,"nodeType":"Block","src":"364:71:36","statements":[{"expression":{"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5203,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"374:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5205,"indexExpression":{"id":5204,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5198,"src":"384:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"374:13:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5206,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"391:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"374:23:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5208,"nodeType":"ExpressionStatement","src":"374:23:36"},{"expression":{"id":5211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5209,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"407:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5210,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"422:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"407:21:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5212,"nodeType":"ExpressionStatement","src":"407:21:36"}]},"functionSelector":"40c10f19","id":5214,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"324:4:36","nodeType":"FunctionDefinition","parameters":{"id":5201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5198,"mutability":"mutable","name":"to","nameLocation":"337:2:36","nodeType":"VariableDeclaration","scope":5214,"src":"329:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5197,"name":"address","nodeType":"ElementaryTypeName","src":"329:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5200,"mutability":"mutable","name":"amount","nameLocation":"349:6:36","nodeType":"VariableDeclaration","scope":5214,"src":"341:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5199,"name":"uint256","nodeType":"ElementaryTypeName","src":"341:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"328:28:36"},"returnParameters":{"id":5202,"nodeType":"ParameterList","parameters":[],"src":"364:0:36"},"scope":5215,"src":"315:120:36","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":5216,"src":"124:313:36","usedErrors":[]}],"src":"45:393:36"},"id":36},"contracts/test/MockLooksRareRewardsDistributor.sol":{"ast":{"absolutePath":"contracts/test/MockLooksRareRewardsDistributor.sol","exportedSymbols":{"ERC20":[8531],"MockLooksRareRewardsDistributor":[5260]},"id":5261,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5217,"literals":["solidity","^","0.8",".15"],"nodeType":"PragmaDirective","src":"45:24:37"},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":5219,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5261,"sourceUnit":8532,"src":"71:51:37","symbolAliases":[{"foreign":{"id":5218,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"79:5:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MockLooksRareRewardsDistributor","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5260,"linearizedBaseContracts":[5260],"name":"MockLooksRareRewardsDistributor","nameLocation":"133:31:37","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"5abe7a36","id":5221,"mutability":"immutable","name":"routerRewardsDistributor","nameLocation":"196:24:37","nodeType":"VariableDeclaration","scope":5260,"src":"171:49:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5220,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":5224,"mutability":"immutable","name":"looksRareToken","nameLocation":"242:14:37","nodeType":"VariableDeclaration","scope":5260,"src":"226:30:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":5223,"nodeType":"UserDefinedTypeName","pathNode":{"id":5222,"name":"ERC20","nameLocations":["226:5:37"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"226:5:37"},"referencedDeclaration":8531,"src":"226:5:37","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"},{"body":{"id":5241,"nodeType":"Block","src":"335:118:37","statements":[{"expression":{"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5231,"name":"routerRewardsDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5221,"src":"345:24:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5232,"name":"_routerRewardsDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"372:25:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"345:52:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5234,"nodeType":"ExpressionStatement","src":"345:52:37"},{"expression":{"id":5239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5235,"name":"looksRareToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5224,"src":"407:14:37","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5237,"name":"_looksRareToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5228,"src":"430:15:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5236,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"424:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":5238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"src":"407:39:37","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":5240,"nodeType":"ExpressionStatement","src":"407:39:37"}]},"id":5242,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5226,"mutability":"mutable","name":"_routerRewardsDistributor","nameLocation":"283:25:37","nodeType":"VariableDeclaration","scope":5242,"src":"275:33:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5225,"name":"address","nodeType":"ElementaryTypeName","src":"275:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5228,"mutability":"mutable","name":"_looksRareToken","nameLocation":"318:15:37","nodeType":"VariableDeclaration","scope":5242,"src":"310:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5227,"name":"address","nodeType":"ElementaryTypeName","src":"310:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"274:60:37"},"returnParameters":{"id":5230,"nodeType":"ParameterList","parameters":[],"src":"335:0:37"},"scope":5260,"src":"263:190:37","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5258,"nodeType":"Block","src":"479:107:37","statements":[{"expression":{"arguments":[{"id":5248,"name":"routerRewardsDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5221,"src":"513:24:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":5253,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"572:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_MockLooksRareRewardsDistributor_$5260","typeString":"contract MockLooksRareRewardsDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockLooksRareRewardsDistributor_$5260","typeString":"contract MockLooksRareRewardsDistributor"}],"id":5252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"564:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5251,"name":"address","nodeType":"ElementaryTypeName","src":"564:7:37","typeDescriptions":{}}},"id":5254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"564:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5249,"name":"looksRareToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5224,"src":"539:14:37","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":5250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"554:9:37","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8174,"src":"539:24:37","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":5255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"539:39:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5245,"name":"looksRareToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5224,"src":"489:14:37","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":5247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"504:8:37","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8281,"src":"489:23:37","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":5256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"489:90:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5257,"nodeType":"ExpressionStatement","src":"489:90:37"}]},"id":5259,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5243,"nodeType":"ParameterList","parameters":[],"src":"467:2:37"},"returnParameters":{"id":5244,"nodeType":"ParameterList","parameters":[],"src":"479:0:37"},"scope":5260,"src":"459:127:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5261,"src":"124:464:37","usedErrors":[]}],"src":"45:544:37"},"id":37},"contracts/test/ReenteringProtocol.sol":{"ast":{"absolutePath":"contracts/test/ReenteringProtocol.sol","exportedSymbols":{"ReenteringProtocol":[5286]},"id":5287,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5262,"literals":["solidity","^","0.8",".15"],"nodeType":"PragmaDirective","src":"45:24:38"},{"abstract":false,"baseContracts":[],"canonicalName":"ReenteringProtocol","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5286,"linearizedBaseContracts":[5286],"name":"ReenteringProtocol","nameLocation":"80:18:38","nodeType":"ContractDefinition","nodes":[{"errorSelector":"b418cb98","id":5264,"name":"NotAllowedReenter","nameLocation":"111:17:38","nodeType":"ErrorDefinition","parameters":{"id":5263,"nodeType":"ParameterList","parameters":[],"src":"128:2:38"},"src":"105:26:38"},{"body":{"id":5284,"nodeType":"Block","src":"222:111:38","statements":[{"assignments":[5272,null],"declarations":[{"constant":false,"id":5272,"mutability":"mutable","name":"success","nameLocation":"238:7:38","nodeType":"VariableDeclaration","scope":5284,"src":"233:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5271,"name":"bool","nodeType":"ElementaryTypeName","src":"233:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":5277,"initialValue":{"arguments":[{"id":5275,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"271:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":5273,"name":"universalRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"250:15:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"266:4:38","memberName":"call","nodeType":"MemberAccess","src":"250:20:38","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":5276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"250:26:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"232:44:38"},{"condition":{"id":5279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"290:8:38","subExpression":{"id":5278,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5272,"src":"291:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5283,"nodeType":"IfStatement","src":"286:40:38","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5280,"name":"NotAllowedReenter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"307:17:38","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"307:19:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5282,"nodeType":"RevertStatement","src":"300:26:38"}}]},"functionSelector":"260b0b4c","id":5285,"implemented":true,"kind":"function","modifiers":[],"name":"callAndReenter","nameLocation":"146:14:38","nodeType":"FunctionDefinition","parameters":{"id":5269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5266,"mutability":"mutable","name":"universalRouter","nameLocation":"169:15:38","nodeType":"VariableDeclaration","scope":5285,"src":"161:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5265,"name":"address","nodeType":"ElementaryTypeName","src":"161:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5268,"mutability":"mutable","name":"data","nameLocation":"201:4:38","nodeType":"VariableDeclaration","scope":5285,"src":"186:19:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5267,"name":"bytes","nodeType":"ElementaryTypeName","src":"186:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"160:46:38"},"returnParameters":{"id":5270,"nodeType":"ParameterList","parameters":[],"src":"222:0:38"},"scope":5286,"src":"137:196:38","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":5287,"src":"71:264:38","usedErrors":[5264]}],"src":"45:291:38"},"id":38},"contracts/test/TestCustomErrors.sol":{"ast":{"absolutePath":"contracts/test/TestCustomErrors.sol","exportedSymbols":{"TestCustomErrors":[5293]},"id":5294,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5288,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"45:24:39"},{"abstract":false,"baseContracts":[],"canonicalName":"TestCustomErrors","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5293,"linearizedBaseContracts":[5293],"name":"TestCustomErrors","nameLocation":"80:16:39","nodeType":"ContractDefinition","nodes":[{"errorSelector":"8baa579f","id":5290,"name":"InvalidSignature","nameLocation":"199:16:39","nodeType":"ErrorDefinition","parameters":{"id":5289,"nodeType":"ParameterList","parameters":[],"src":"215:2:39"},"src":"193:25:39"},{"errorSelector":"c4bd89a9","id":5292,"name":"UnsafeCast","nameLocation":"229:10:39","nodeType":"ErrorDefinition","parameters":{"id":5291,"nodeType":"ParameterList","parameters":[],"src":"239:2:39"},"src":"223:19:39"}],"scope":5294,"src":"71:173:39","usedErrors":[5290,5292]}],"src":"45:200:39"},"id":39},"permit2/src/AllowanceTransfer.sol":{"ast":{"absolutePath":"permit2/src/AllowanceTransfer.sol","exportedSymbols":{"Allowance":[6864],"AllowanceTransfer":[5842],"EIP712":[5938],"ERC20":[8531],"IAllowanceTransfer":[6600],"InvalidNonce":[5960],"PermitHash":[7264],"SafeTransferLib":[9180],"SignatureExpired":[5957],"SignatureVerification":[7464]},"id":5843,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5295,"literals":["solidity","0.8",".17"],"nodeType":"PragmaDirective","src":"32:23:40"},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":5297,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":8532,"src":"57:51:40","symbolAliases":[{"foreign":{"id":5296,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"65:5:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/utils/SafeTransferLib.sol","file":"solmate/src/utils/SafeTransferLib.sol","id":5299,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":9181,"src":"109:70:40","symbolAliases":[{"foreign":{"id":5298,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9180,"src":"117:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/libraries/PermitHash.sol","file":"./libraries/PermitHash.sol","id":5301,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":7265,"src":"180:54:40","symbolAliases":[{"foreign":{"id":5300,"name":"PermitHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"188:10:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/libraries/SignatureVerification.sol","file":"./libraries/SignatureVerification.sol","id":5303,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":7465,"src":"235:76:40","symbolAliases":[{"foreign":{"id":5302,"name":"SignatureVerification","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7464,"src":"243:21:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/EIP712.sol","file":"./EIP712.sol","id":5305,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":5939,"src":"312:36:40","symbolAliases":[{"foreign":{"id":5304,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"320:6:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"../src/interfaces/IAllowanceTransfer.sol","id":5307,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":6601,"src":"349:76:40","symbolAliases":[{"foreign":{"id":5306,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"357:18:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/PermitErrors.sol","file":"./PermitErrors.sol","id":5310,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":5961,"src":"426:66:40","symbolAliases":[{"foreign":{"id":5308,"name":"SignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"434:16:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5309,"name":"InvalidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"452:12:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/libraries/Allowance.sol","file":"./libraries/Allowance.sol","id":5312,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5843,"sourceUnit":6865,"src":"493:52:40","symbolAliases":[{"foreign":{"id":5311,"name":"Allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6864,"src":"501:9:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5313,"name":"IAllowanceTransfer","nameLocations":["577:18:40"],"nodeType":"IdentifierPath","referencedDeclaration":6600,"src":"577:18:40"},"id":5314,"nodeType":"InheritanceSpecifier","src":"577:18:40"},{"baseName":{"id":5315,"name":"EIP712","nameLocations":["597:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":5938,"src":"597:6:40"},"id":5316,"nodeType":"InheritanceSpecifier","src":"597:6:40"}],"canonicalName":"AllowanceTransfer","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5842,"linearizedBaseContracts":[5842,5938,6600],"name":"AllowanceTransfer","nameLocation":"556:17:40","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5319,"libraryName":{"id":5317,"name":"SignatureVerification","nameLocations":["616:21:40"],"nodeType":"IdentifierPath","referencedDeclaration":7464,"src":"616:21:40"},"nodeType":"UsingForDirective","src":"610:38:40","typeName":{"id":5318,"name":"bytes","nodeType":"ElementaryTypeName","src":"642:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"global":false,"id":5323,"libraryName":{"id":5320,"name":"SafeTransferLib","nameLocations":["659:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":9180,"src":"659:15:40"},"nodeType":"UsingForDirective","src":"653:32:40","typeName":{"id":5322,"nodeType":"UserDefinedTypeName","pathNode":{"id":5321,"name":"ERC20","nameLocations":["679:5:40"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"679:5:40"},"referencedDeclaration":8531,"src":"679:5:40","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}}},{"global":false,"id":5327,"libraryName":{"id":5324,"name":"PermitHash","nameLocations":["696:10:40"],"nodeType":"IdentifierPath","referencedDeclaration":7264,"src":"696:10:40"},"nodeType":"UsingForDirective","src":"690:34:40","typeName":{"id":5326,"nodeType":"UserDefinedTypeName","pathNode":{"id":5325,"name":"PermitSingle","nameLocations":["711:12:40"],"nodeType":"IdentifierPath","referencedDeclaration":6481,"src":"711:12:40"},"referencedDeclaration":6481,"src":"711:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_storage_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"}}},{"global":false,"id":5331,"libraryName":{"id":5328,"name":"PermitHash","nameLocations":["735:10:40"],"nodeType":"IdentifierPath","referencedDeclaration":7264,"src":"735:10:40"},"nodeType":"UsingForDirective","src":"729:33:40","typeName":{"id":5330,"nodeType":"UserDefinedTypeName","pathNode":{"id":5329,"name":"PermitBatch","nameLocations":["750:11:40"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"750:11:40"},"referencedDeclaration":6490,"src":"750:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}}},{"global":false,"id":5335,"libraryName":{"id":5332,"name":"Allowance","nameLocations":["773:9:40"],"nodeType":"IdentifierPath","referencedDeclaration":6864,"src":"773:9:40"},"nodeType":"UsingForDirective","src":"767:36:40","typeName":{"id":5334,"nodeType":"UserDefinedTypeName","pathNode":{"id":5333,"name":"PackedAllowance","nameLocations":["787:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":6497,"src":"787:15:40"},"referencedDeclaration":6497,"src":"787:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"}}},{"baseFunctions":[6527],"constant":false,"documentation":{"id":5336,"nodeType":"StructuredDocumentation","src":"809:284:40","text":"@notice Maps users to tokens to spender addresses and information about the approval on the token\n @dev Indexed in the order of token owner address, token address, spender address\n @dev The stored word saves the allowed amount, expiration on the allowance, and nonce"},"functionSelector":"927da105","id":5345,"mutability":"mutable","name":"allowance","nameLocation":"1181:9:40","nodeType":"VariableDeclaration","scope":5842,"src":"1098:92:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance)))"},"typeName":{"id":5344,"keyType":{"id":5337,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1098:75:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance)))"},"valueType":{"id":5343,"keyType":{"id":5338,"name":"address","nodeType":"ElementaryTypeName","src":"1125:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1117:55:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$","typeString":"mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance))"},"valueType":{"id":5342,"keyType":{"id":5339,"name":"address","nodeType":"ElementaryTypeName","src":"1144:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1136:35:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$","typeString":"mapping(address => struct IAllowanceTransfer.PackedAllowance)"},"valueType":{"id":5341,"nodeType":"UserDefinedTypeName","pathNode":{"id":5340,"name":"PackedAllowance","nameLocations":["1155:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":6497,"src":"1155:15:40"},"referencedDeclaration":6497,"src":"1155:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"}}}}},"visibility":"public"},{"baseFunctions":[6539],"body":{"id":5385,"nodeType":"Block","src":"1329:222:40","statements":[{"assignments":[5359],"declarations":[{"constant":false,"id":5359,"mutability":"mutable","name":"allowed","nameLocation":"1363:7:40","nodeType":"VariableDeclaration","scope":5385,"src":"1339:31:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"},"typeName":{"id":5358,"nodeType":"UserDefinedTypeName","pathNode":{"id":5357,"name":"PackedAllowance","nameLocations":["1339:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":6497,"src":"1339:15:40"},"referencedDeclaration":6497,"src":"1339:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"}},"visibility":"internal"}],"id":5368,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":5360,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"1373:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)))"}},"id":5363,"indexExpression":{"expression":{"id":5361,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1383:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1387:6:40","memberName":"sender","nodeType":"MemberAccess","src":"1383:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1373:21:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$","typeString":"mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref))"}},"id":5365,"indexExpression":{"id":5364,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"1395:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1373:28:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$","typeString":"mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)"}},"id":5367,"indexExpression":{"id":5366,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5350,"src":"1402:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1373:37:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage","typeString":"struct IAllowanceTransfer.PackedAllowance storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1339:71:40"},{"expression":{"arguments":[{"id":5372,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5352,"src":"1454:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5373,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"1462:10:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":5369,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5359,"src":"1420:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":5371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1428:25:40","memberName":"updateAmountAndExpiration","nodeType":"MemberAccess","referencedDeclaration":6831,"src":"1420:33:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PackedAllowance_$6497_storage_ptr_$_t_uint160_$_t_uint48_$returns$__$bound_to$_t_struct$_PackedAllowance_$6497_storage_ptr_$","typeString":"function (struct IAllowanceTransfer.PackedAllowance storage pointer,uint160,uint48)"}},"id":5374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:53:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5375,"nodeType":"ExpressionStatement","src":"1420:53:40"},{"eventCall":{"arguments":[{"expression":{"id":5377,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1497:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1501:6:40","memberName":"sender","nodeType":"MemberAccess","src":"1497:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5379,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"1509:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5380,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5350,"src":"1516:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5381,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5352,"src":"1525:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5382,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"1533:10:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5376,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"1488:8:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint160_$_t_uint48_$returns$__$","typeString":"function (address,address,address,uint160,uint48)"}},"id":5383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1488:56:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5384,"nodeType":"EmitStatement","src":"1483:61:40"}]},"documentation":{"id":5346,"nodeType":"StructuredDocumentation","src":"1197:34:40","text":"@inheritdoc IAllowanceTransfer"},"functionSelector":"87517c45","id":5386,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"1245:7:40","nodeType":"FunctionDefinition","parameters":{"id":5355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5348,"mutability":"mutable","name":"token","nameLocation":"1261:5:40","nodeType":"VariableDeclaration","scope":5386,"src":"1253:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5347,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5350,"mutability":"mutable","name":"spender","nameLocation":"1276:7:40","nodeType":"VariableDeclaration","scope":5386,"src":"1268:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5349,"name":"address","nodeType":"ElementaryTypeName","src":"1268:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5352,"mutability":"mutable","name":"amount","nameLocation":"1293:6:40","nodeType":"VariableDeclaration","scope":5386,"src":"1285:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5351,"name":"uint160","nodeType":"ElementaryTypeName","src":"1285:7:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5354,"mutability":"mutable","name":"expiration","nameLocation":"1308:10:40","nodeType":"VariableDeclaration","scope":5386,"src":"1301:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5353,"name":"uint48","nodeType":"ElementaryTypeName","src":"1301:6:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1252:67:40"},"returnParameters":{"id":5356,"nodeType":"ParameterList","parameters":[],"src":"1329:0:40"},"scope":5842,"src":"1236:315:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[6550],"body":{"id":5427,"nodeType":"Block","src":"1696:319:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5397,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1710:5:40","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1716:9:40","memberName":"timestamp","nodeType":"MemberAccess","src":"1710:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":5399,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"1728:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":5400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1741:11:40","memberName":"sigDeadline","nodeType":"MemberAccess","referencedDeclaration":6480,"src":"1728:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1710:42:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5407,"nodeType":"IfStatement","src":"1706:97:40","trueBody":{"errorCall":{"arguments":[{"expression":{"id":5403,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"1778:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":5404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1791:11:40","memberName":"sigDeadline","nodeType":"MemberAccess","referencedDeclaration":6480,"src":"1778:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5402,"name":"SignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"1761:16:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1761:42:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5406,"nodeType":"RevertStatement","src":"1754:49:40"}},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5412,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"1903:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":5413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1916:4:40","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":6937,"src":"1903:17:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PermitSingle_$6481_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PermitSingle_$6481_memory_ptr_$","typeString":"function (struct IAllowanceTransfer.PermitSingle memory) pure returns (bytes32)"}},"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1903:19:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5411,"name":"_hashTypedData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"1888:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1888:35:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5416,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"1925:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5408,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"1871:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":5410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1881:6:40","memberName":"verify","nodeType":"MemberAccess","referencedDeclaration":7463,"src":"1871:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$_t_bytes32_$_t_address_$returns$__$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,bytes32,address) view"}},"id":5417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1871:60:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5418,"nodeType":"ExpressionStatement","src":"1871:60:40"},{"expression":{"arguments":[{"expression":{"id":5420,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"1958:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":5421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1971:7:40","memberName":"details","nodeType":"MemberAccess","referencedDeclaration":6476,"src":"1958:20:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}},{"id":5422,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"1980:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5423,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"1987:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":5424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2000:7:40","memberName":"spender","nodeType":"MemberAccess","referencedDeclaration":6478,"src":"1987:20:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5419,"name":"_updateApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5841,"src":"1942:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PermitDetails_$6473_memory_ptr_$_t_address_$_t_address_$returns$__$","typeString":"function (struct IAllowanceTransfer.PermitDetails memory,address,address)"}},"id":5425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1942:66:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5426,"nodeType":"ExpressionStatement","src":"1942:66:40"}]},"documentation":{"id":5387,"nodeType":"StructuredDocumentation","src":"1557:34:40","text":"@inheritdoc IAllowanceTransfer"},"functionSelector":"2b67b570","id":5428,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1605:6:40","nodeType":"FunctionDefinition","parameters":{"id":5395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5389,"mutability":"mutable","name":"owner","nameLocation":"1620:5:40","nodeType":"VariableDeclaration","scope":5428,"src":"1612:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5388,"name":"address","nodeType":"ElementaryTypeName","src":"1612:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5392,"mutability":"mutable","name":"permitSingle","nameLocation":"1647:12:40","nodeType":"VariableDeclaration","scope":5428,"src":"1627:32:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"},"typeName":{"id":5391,"nodeType":"UserDefinedTypeName","pathNode":{"id":5390,"name":"PermitSingle","nameLocations":["1627:12:40"],"nodeType":"IdentifierPath","referencedDeclaration":6481,"src":"1627:12:40"},"referencedDeclaration":6481,"src":"1627:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_storage_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"}},"visibility":"internal"},{"constant":false,"id":5394,"mutability":"mutable","name":"signature","nameLocation":"1676:9:40","nodeType":"VariableDeclaration","scope":5428,"src":"1661:24:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5393,"name":"bytes","nodeType":"ElementaryTypeName","src":"1661:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1611:75:40"},"returnParameters":{"id":5396,"nodeType":"ParameterList","parameters":[],"src":"1696:0:40"},"scope":5842,"src":"1596:419:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[6561],"body":{"id":5494,"nodeType":"Block","src":"2158:512:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5439,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2172:5:40","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2178:9:40","memberName":"timestamp","nodeType":"MemberAccess","src":"2172:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":5441,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"2190:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":5442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2202:11:40","memberName":"sigDeadline","nodeType":"MemberAccess","referencedDeclaration":6489,"src":"2190:23:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2172:41:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5449,"nodeType":"IfStatement","src":"2168:95:40","trueBody":{"errorCall":{"arguments":[{"expression":{"id":5445,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"2239:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":5446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2251:11:40","memberName":"sigDeadline","nodeType":"MemberAccess","referencedDeclaration":6489,"src":"2239:23:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5444,"name":"SignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"2222:16:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2222:41:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5448,"nodeType":"RevertStatement","src":"2215:48:40"}},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5454,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"2363:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":5455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2375:4:40","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":7003,"src":"2363:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PermitBatch_$6490_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PermitBatch_$6490_memory_ptr_$","typeString":"function (struct IAllowanceTransfer.PermitBatch memory) pure returns (bytes32)"}},"id":5456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2363:18:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5453,"name":"_hashTypedData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"2348:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":5457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2348:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5458,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5431,"src":"2384:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5450,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"2331:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":5452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2341:6:40","memberName":"verify","nodeType":"MemberAccess","referencedDeclaration":7463,"src":"2331:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$_t_bytes32_$_t_address_$returns$__$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,bytes32,address) view"}},"id":5459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2331:59:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5460,"nodeType":"ExpressionStatement","src":"2331:59:40"},{"assignments":[5462],"declarations":[{"constant":false,"id":5462,"mutability":"mutable","name":"spender","nameLocation":"2409:7:40","nodeType":"VariableDeclaration","scope":5494,"src":"2401:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5461,"name":"address","nodeType":"ElementaryTypeName","src":"2401:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5465,"initialValue":{"expression":{"id":5463,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"2419:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":5464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2431:7:40","memberName":"spender","nodeType":"MemberAccess","referencedDeclaration":6487,"src":"2419:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2401:37:40"},{"id":5493,"nodeType":"UncheckedBlock","src":"2448:216:40","statements":[{"assignments":[5467],"declarations":[{"constant":false,"id":5467,"mutability":"mutable","name":"length","nameLocation":"2480:6:40","nodeType":"VariableDeclaration","scope":5493,"src":"2472:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5466,"name":"uint256","nodeType":"ElementaryTypeName","src":"2472:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5471,"initialValue":{"expression":{"expression":{"id":5468,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"2489:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":5469,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2501:7:40","memberName":"details","nodeType":"MemberAccess","referencedDeclaration":6485,"src":"2489:19:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$6473_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory[] memory"}},"id":5470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2509:6:40","memberName":"length","nodeType":"MemberAccess","src":"2489:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2472:43:40"},{"body":{"id":5491,"nodeType":"Block","src":"2566:88:40","statements":[{"expression":{"arguments":[{"baseExpression":{"expression":{"id":5483,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"2600:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":5484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2612:7:40","memberName":"details","nodeType":"MemberAccess","referencedDeclaration":6485,"src":"2600:19:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$6473_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory[] memory"}},"id":5486,"indexExpression":{"id":5485,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5473,"src":"2620:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2600:22:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}},{"id":5487,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5431,"src":"2624:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5488,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5462,"src":"2631:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5482,"name":"_updateApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5841,"src":"2584:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PermitDetails_$6473_memory_ptr_$_t_address_$_t_address_$returns$__$","typeString":"function (struct IAllowanceTransfer.PermitDetails memory,address,address)"}},"id":5489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2584:55:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5490,"nodeType":"ExpressionStatement","src":"2584:55:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5476,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5473,"src":"2549:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5477,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5467,"src":"2553:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2549:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5492,"initializationExpression":{"assignments":[5473],"declarations":[{"constant":false,"id":5473,"mutability":"mutable","name":"i","nameLocation":"2542:1:40","nodeType":"VariableDeclaration","scope":5492,"src":"2534:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5472,"name":"uint256","nodeType":"ElementaryTypeName","src":"2534:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5475,"initialValue":{"hexValue":"30","id":5474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2534:13:40"},"loopExpression":{"expression":{"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2561:3:40","subExpression":{"id":5479,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5473,"src":"2563:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5481,"nodeType":"ExpressionStatement","src":"2561:3:40"},"nodeType":"ForStatement","src":"2529:125:40"}]}]},"documentation":{"id":5429,"nodeType":"StructuredDocumentation","src":"2021:34:40","text":"@inheritdoc IAllowanceTransfer"},"functionSelector":"2a2d80d1","id":5495,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nameLocation":"2069:6:40","nodeType":"FunctionDefinition","parameters":{"id":5437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5431,"mutability":"mutable","name":"owner","nameLocation":"2084:5:40","nodeType":"VariableDeclaration","scope":5495,"src":"2076:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5430,"name":"address","nodeType":"ElementaryTypeName","src":"2076:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5434,"mutability":"mutable","name":"permitBatch","nameLocation":"2110:11:40","nodeType":"VariableDeclaration","scope":5495,"src":"2091:30:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":5433,"nodeType":"UserDefinedTypeName","pathNode":{"id":5432,"name":"PermitBatch","nameLocations":["2091:11:40"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"2091:11:40"},"referencedDeclaration":6490,"src":"2091:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"},{"constant":false,"id":5436,"mutability":"mutable","name":"signature","nameLocation":"2138:9:40","nodeType":"VariableDeclaration","scope":5495,"src":"2123:24:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5435,"name":"bytes","nodeType":"ElementaryTypeName","src":"2123:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2075:73:40"},"returnParameters":{"id":5438,"nodeType":"ParameterList","parameters":[],"src":"2158:0:40"},"scope":5842,"src":"2060:610:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[6573],"body":{"id":5514,"nodeType":"Block","src":"2803:51:40","statements":[{"expression":{"arguments":[{"id":5508,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5498,"src":"2823:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5509,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"2829:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5510,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5502,"src":"2833:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5511,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"2841:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5507,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5641,"src":"2813:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address)"}},"id":5512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2813:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5513,"nodeType":"ExpressionStatement","src":"2813:34:40"}]},"documentation":{"id":5496,"nodeType":"StructuredDocumentation","src":"2676:34:40","text":"@inheritdoc IAllowanceTransfer"},"functionSelector":"36c78516","id":5515,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2724:12:40","nodeType":"FunctionDefinition","parameters":{"id":5505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5498,"mutability":"mutable","name":"from","nameLocation":"2745:4:40","nodeType":"VariableDeclaration","scope":5515,"src":"2737:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5497,"name":"address","nodeType":"ElementaryTypeName","src":"2737:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5500,"mutability":"mutable","name":"to","nameLocation":"2759:2:40","nodeType":"VariableDeclaration","scope":5515,"src":"2751:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5499,"name":"address","nodeType":"ElementaryTypeName","src":"2751:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5502,"mutability":"mutable","name":"amount","nameLocation":"2771:6:40","nodeType":"VariableDeclaration","scope":5515,"src":"2763:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5501,"name":"uint160","nodeType":"ElementaryTypeName","src":"2763:7:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5504,"mutability":"mutable","name":"token","nameLocation":"2787:5:40","nodeType":"VariableDeclaration","scope":5515,"src":"2779:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5503,"name":"address","nodeType":"ElementaryTypeName","src":"2779:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2736:57:40"},"returnParameters":{"id":5506,"nodeType":"ParameterList","parameters":[],"src":"2803:0:40"},"scope":5842,"src":"2715:139:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[6581],"body":{"id":5559,"nodeType":"Block","src":"2983:352:40","statements":[{"id":5558,"nodeType":"UncheckedBlock","src":"2993:336:40","statements":[{"assignments":[5524],"declarations":[{"constant":false,"id":5524,"mutability":"mutable","name":"length","nameLocation":"3025:6:40","nodeType":"VariableDeclaration","scope":5558,"src":"3017:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5523,"name":"uint256","nodeType":"ElementaryTypeName","src":"3017:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5527,"initialValue":{"expression":{"id":5525,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5520,"src":"3034:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails calldata[] calldata"}},"id":5526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3050:6:40","memberName":"length","nodeType":"MemberAccess","src":"3034:22:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3017:39:40"},{"body":{"id":5556,"nodeType":"Block","src":"3107:212:40","statements":[{"assignments":[5540],"declarations":[{"constant":false,"id":5540,"mutability":"mutable","name":"transferDetail","nameLocation":"3157:14:40","nodeType":"VariableDeclaration","scope":5556,"src":"3125:46:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails"},"typeName":{"id":5539,"nodeType":"UserDefinedTypeName","pathNode":{"id":5538,"name":"AllowanceTransferDetails","nameLocations":["3125:24:40"],"nodeType":"IdentifierPath","referencedDeclaration":6511,"src":"3125:24:40"},"referencedDeclaration":6511,"src":"3125:24:40","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails"}},"visibility":"internal"}],"id":5544,"initialValue":{"baseExpression":{"id":5541,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5520,"src":"3174:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails calldata[] calldata"}},"id":5543,"indexExpression":{"id":5542,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"3190:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3174:18:40","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_calldata_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails calldata"}},"nodeType":"VariableDeclarationStatement","src":"3125:67:40"},{"expression":{"arguments":[{"expression":{"id":5546,"name":"transferDetail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5540,"src":"3220:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory"}},"id":5547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3235:4:40","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":6504,"src":"3220:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5548,"name":"transferDetail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5540,"src":"3241:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory"}},"id":5549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3256:2:40","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":6506,"src":"3241:17:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5550,"name":"transferDetail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5540,"src":"3260:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory"}},"id":5551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3275:6:40","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6508,"src":"3260:21:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":5552,"name":"transferDetail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5540,"src":"3283:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_memory_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails memory"}},"id":5553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3298:5:40","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":6510,"src":"3283:20:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5545,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5641,"src":"3210:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address)"}},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3210:94:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5555,"nodeType":"ExpressionStatement","src":"3210:94:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5532,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"3090:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5533,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"3094:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3090:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5557,"initializationExpression":{"assignments":[5529],"declarations":[{"constant":false,"id":5529,"mutability":"mutable","name":"i","nameLocation":"3083:1:40","nodeType":"VariableDeclaration","scope":5557,"src":"3075:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5528,"name":"uint256","nodeType":"ElementaryTypeName","src":"3075:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5531,"initialValue":{"hexValue":"30","id":5530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3087:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3075:13:40"},"loopExpression":{"expression":{"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3102:3:40","subExpression":{"id":5535,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"3104:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5537,"nodeType":"ExpressionStatement","src":"3102:3:40"},"nodeType":"ForStatement","src":"3070:249:40"}]}]},"documentation":{"id":5516,"nodeType":"StructuredDocumentation","src":"2860:34:40","text":"@inheritdoc IAllowanceTransfer"},"functionSelector":"0d58b1db","id":5560,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2908:12:40","nodeType":"FunctionDefinition","parameters":{"id":5521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5520,"mutability":"mutable","name":"transferDetails","nameLocation":"2957:15:40","nodeType":"VariableDeclaration","scope":5560,"src":"2921:51:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"},"typeName":{"baseType":{"id":5518,"nodeType":"UserDefinedTypeName","pathNode":{"id":5517,"name":"AllowanceTransferDetails","nameLocations":["2921:24:40"],"nodeType":"IdentifierPath","referencedDeclaration":6511,"src":"2921:24:40"},"referencedDeclaration":6511,"src":"2921:24:40","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails"}},"id":5519,"nodeType":"ArrayTypeName","src":"2921:26:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"}},"visibility":"internal"}],"src":"2920:53:40"},"returnParameters":{"id":5522,"nodeType":"ParameterList","parameters":[],"src":"2983:0:40"},"scope":5842,"src":"2899:436:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5640,"nodeType":"Block","src":"3566:653:40","statements":[{"assignments":[5574],"declarations":[{"constant":false,"id":5574,"mutability":"mutable","name":"allowed","nameLocation":"3600:7:40","nodeType":"VariableDeclaration","scope":5640,"src":"3576:31:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"},"typeName":{"id":5573,"nodeType":"UserDefinedTypeName","pathNode":{"id":5572,"name":"PackedAllowance","nameLocations":["3576:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":6497,"src":"3576:15:40"},"referencedDeclaration":6497,"src":"3576:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"}},"visibility":"internal"}],"id":5583,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":5575,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"3610:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)))"}},"id":5577,"indexExpression":{"id":5576,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5563,"src":"3620:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3610:15:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$","typeString":"mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref))"}},"id":5579,"indexExpression":{"id":5578,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5569,"src":"3626:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3610:22:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$","typeString":"mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)"}},"id":5582,"indexExpression":{"expression":{"id":5580,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3633:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3637:6:40","memberName":"sender","nodeType":"MemberAccess","src":"3633:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3610:34:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage","typeString":"struct IAllowanceTransfer.PackedAllowance storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3576:68:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5584,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3659:5:40","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3665:9:40","memberName":"timestamp","nodeType":"MemberAccess","src":"3659:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":5586,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5574,"src":"3677:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":5587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3685:10:40","memberName":"expiration","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"3677:18:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3659:36:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5594,"nodeType":"IfStatement","src":"3655:85:40","trueBody":{"errorCall":{"arguments":[{"expression":{"id":5590,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5574,"src":"3721:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":5591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3729:10:40","memberName":"expiration","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"3721:18:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5589,"name":"AllowanceExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"3704:16:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3704:36:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5593,"nodeType":"RevertStatement","src":"3697:43:40"}},{"assignments":[5596],"declarations":[{"constant":false,"id":5596,"mutability":"mutable","name":"maxAmount","nameLocation":"3759:9:40","nodeType":"VariableDeclaration","scope":5640,"src":"3751:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5595,"name":"uint256","nodeType":"ElementaryTypeName","src":"3751:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5599,"initialValue":{"expression":{"id":5597,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5574,"src":"3771:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":5598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3779:6:40","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6492,"src":"3771:14:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"3751:34:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5600,"name":"maxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"3799:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":5603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3817:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5602,"name":"uint160","nodeType":"ElementaryTypeName","src":"3817:7:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5601,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3812:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3812:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3826:3:40","memberName":"max","nodeType":"MemberAccess","src":"3812:17:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3799:30:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5630,"nodeType":"IfStatement","src":"3795:289:40","trueBody":{"id":5629,"nodeType":"Block","src":"3831:253:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5607,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"3849:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5608,"name":"maxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"3858:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3849:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5627,"nodeType":"Block","src":"3947:127:40","statements":[{"id":5626,"nodeType":"UncheckedBlock","src":"3965:95:40","statements":[{"expression":{"id":5624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5615,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5574,"src":"3997:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":5617,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4005:6:40","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6492,"src":"3997:14:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5620,"name":"maxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"4022:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4014:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5618,"name":"uint160","nodeType":"ElementaryTypeName","src":"4014:7:40","typeDescriptions":{}}},"id":5621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4014:18:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5622,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"4035:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4014:27:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3997:44:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5625,"nodeType":"ExpressionStatement","src":"3997:44:40"}]}]},"id":5628,"nodeType":"IfStatement","src":"3845:229:40","trueBody":{"id":5614,"nodeType":"Block","src":"3869:72:40","statements":[{"errorCall":{"arguments":[{"id":5611,"name":"maxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"3916:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5610,"name":"InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"3894:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5613,"nodeType":"RevertStatement","src":"3887:39:40"}]}}]}},{"expression":{"arguments":[{"id":5635,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5563,"src":"4195:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5636,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"4201:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5637,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"4205:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":5632,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5569,"src":"4171:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5631,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"4165:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4165:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4178:16:40","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9139,"src":"4165:29:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$8531_$","typeString":"function (contract ERC20,address,address,uint256)"}},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4165:47:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5639,"nodeType":"ExpressionStatement","src":"4165:47:40"}]},"documentation":{"id":5561,"nodeType":"StructuredDocumentation","src":"3341:136:40","text":"@notice Internal function for transferring tokens using stored allowances\n @dev Will fail if the allowed timeframe has passed"},"id":5641,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"3491:9:40","nodeType":"FunctionDefinition","parameters":{"id":5570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5563,"mutability":"mutable","name":"from","nameLocation":"3509:4:40","nodeType":"VariableDeclaration","scope":5641,"src":"3501:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5562,"name":"address","nodeType":"ElementaryTypeName","src":"3501:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5565,"mutability":"mutable","name":"to","nameLocation":"3523:2:40","nodeType":"VariableDeclaration","scope":5641,"src":"3515:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5564,"name":"address","nodeType":"ElementaryTypeName","src":"3515:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5567,"mutability":"mutable","name":"amount","nameLocation":"3535:6:40","nodeType":"VariableDeclaration","scope":5641,"src":"3527:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5566,"name":"uint160","nodeType":"ElementaryTypeName","src":"3527:7:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5569,"mutability":"mutable","name":"token","nameLocation":"3551:5:40","nodeType":"VariableDeclaration","scope":5641,"src":"3543:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5568,"name":"address","nodeType":"ElementaryTypeName","src":"3543:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3500:57:40"},"returnParameters":{"id":5571,"nodeType":"ParameterList","parameters":[],"src":"3566:0:40"},"scope":5842,"src":"3482:737:40","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[6589],"body":{"id":5703,"nodeType":"Block","src":"4330:476:40","statements":[{"assignments":[5650],"declarations":[{"constant":false,"id":5650,"mutability":"mutable","name":"owner","nameLocation":"4348:5:40","nodeType":"VariableDeclaration","scope":5703,"src":"4340:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5649,"name":"address","nodeType":"ElementaryTypeName","src":"4340:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5653,"initialValue":{"expression":{"id":5651,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4356:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4360:6:40","memberName":"sender","nodeType":"MemberAccess","src":"4356:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4340:26:40"},{"id":5702,"nodeType":"UncheckedBlock","src":"4443:357:40","statements":[{"assignments":[5655],"declarations":[{"constant":false,"id":5655,"mutability":"mutable","name":"length","nameLocation":"4475:6:40","nodeType":"VariableDeclaration","scope":5702,"src":"4467:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5654,"name":"uint256","nodeType":"ElementaryTypeName","src":"4467:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5658,"initialValue":{"expression":{"id":5656,"name":"approvals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5646,"src":"4484:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$6502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair calldata[] calldata"}},"id":5657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4494:6:40","memberName":"length","nodeType":"MemberAccess","src":"4484:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4467:33:40"},{"body":{"id":5700,"nodeType":"Block","src":"4551:239:40","statements":[{"assignments":[5670],"declarations":[{"constant":false,"id":5670,"mutability":"mutable","name":"token","nameLocation":"4577:5:40","nodeType":"VariableDeclaration","scope":5700,"src":"4569:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5669,"name":"address","nodeType":"ElementaryTypeName","src":"4569:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5675,"initialValue":{"expression":{"baseExpression":{"id":5671,"name":"approvals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5646,"src":"4585:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$6502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair calldata[] calldata"}},"id":5673,"indexExpression":{"id":5672,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"4595:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4585:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_TokenSpenderPair_$6502_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair calldata"}},"id":5674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4598:5:40","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":6499,"src":"4585:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4569:34:40"},{"assignments":[5677],"declarations":[{"constant":false,"id":5677,"mutability":"mutable","name":"spender","nameLocation":"4629:7:40","nodeType":"VariableDeclaration","scope":5700,"src":"4621:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5676,"name":"address","nodeType":"ElementaryTypeName","src":"4621:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5682,"initialValue":{"expression":{"baseExpression":{"id":5678,"name":"approvals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5646,"src":"4639:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$6502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair calldata[] calldata"}},"id":5680,"indexExpression":{"id":5679,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"4649:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4639:12:40","typeDescriptions":{"typeIdentifier":"t_struct$_TokenSpenderPair_$6502_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair calldata"}},"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4652:7:40","memberName":"spender","nodeType":"MemberAccess","referencedDeclaration":6501,"src":"4639:20:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4621:38:40"},{"expression":{"id":5692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":5683,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"4678:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)))"}},"id":5687,"indexExpression":{"id":5684,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5650,"src":"4688:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4678:16:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$","typeString":"mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref))"}},"id":5688,"indexExpression":{"id":5685,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5670,"src":"4695:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4678:23:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$","typeString":"mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)"}},"id":5689,"indexExpression":{"id":5686,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5677,"src":"4702:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4678:32:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage","typeString":"struct IAllowanceTransfer.PackedAllowance storage ref"}},"id":5690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4711:6:40","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6492,"src":"4678:39:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":5691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4720:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4678:43:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5693,"nodeType":"ExpressionStatement","src":"4678:43:40"},{"eventCall":{"arguments":[{"id":5695,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5650,"src":"4753:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5696,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5670,"src":"4760:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5697,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5677,"src":"4767:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5694,"name":"Lockdown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"4744:8:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":5698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4744:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5699,"nodeType":"EmitStatement","src":"4739:36:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5663,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"4534:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5664,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5655,"src":"4538:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4534:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5701,"initializationExpression":{"assignments":[5660],"declarations":[{"constant":false,"id":5660,"mutability":"mutable","name":"i","nameLocation":"4527:1:40","nodeType":"VariableDeclaration","scope":5701,"src":"4519:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5659,"name":"uint256","nodeType":"ElementaryTypeName","src":"4519:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5662,"initialValue":{"hexValue":"30","id":5661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4531:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4519:13:40"},"loopExpression":{"expression":{"id":5667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4546:3:40","subExpression":{"id":5666,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"4548:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5668,"nodeType":"ExpressionStatement","src":"4546:3:40"},"nodeType":"ForStatement","src":"4514:276:40"}]}]},"documentation":{"id":5642,"nodeType":"StructuredDocumentation","src":"4225:34:40","text":"@inheritdoc IAllowanceTransfer"},"functionSelector":"cc53287f","id":5704,"implemented":true,"kind":"function","modifiers":[],"name":"lockdown","nameLocation":"4273:8:40","nodeType":"FunctionDefinition","parameters":{"id":5647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5646,"mutability":"mutable","name":"approvals","nameLocation":"4310:9:40","nodeType":"VariableDeclaration","scope":5704,"src":"4282:37:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$6502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair[]"},"typeName":{"baseType":{"id":5644,"nodeType":"UserDefinedTypeName","pathNode":{"id":5643,"name":"TokenSpenderPair","nameLocations":["4282:16:40"],"nodeType":"IdentifierPath","referencedDeclaration":6502,"src":"4282:16:40"},"referencedDeclaration":6502,"src":"4282:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_TokenSpenderPair_$6502_storage_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair"}},"id":5645,"nodeType":"ArrayTypeName","src":"4282:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$6502_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair[]"}},"visibility":"internal"}],"src":"4281:39:40"},"returnParameters":{"id":5648,"nodeType":"ParameterList","parameters":[],"src":"4330:0:40"},"scope":5842,"src":"4264:542:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[6599],"body":{"id":5772,"nodeType":"Block","src":"4935:516:40","statements":[{"assignments":[5715],"declarations":[{"constant":false,"id":5715,"mutability":"mutable","name":"oldNonce","nameLocation":"4952:8:40","nodeType":"VariableDeclaration","scope":5772,"src":"4945:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5714,"name":"uint48","nodeType":"ElementaryTypeName","src":"4945:6:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5725,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":5716,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"4963:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)))"}},"id":5719,"indexExpression":{"expression":{"id":5717,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4973:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4977:6:40","memberName":"sender","nodeType":"MemberAccess","src":"4973:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4963:21:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$","typeString":"mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref))"}},"id":5721,"indexExpression":{"id":5720,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"4985:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4963:28:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$","typeString":"mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)"}},"id":5723,"indexExpression":{"id":5722,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"4992:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4963:37:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage","typeString":"struct IAllowanceTransfer.PackedAllowance storage ref"}},"id":5724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5001:5:40","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6496,"src":"4963:43:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"4945:61:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5726,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"5021:8:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5727,"name":"oldNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5715,"src":"5033:8:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"5021:20:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5732,"nodeType":"IfStatement","src":"5017:47:40","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5729,"name":"InvalidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"5050:12:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5050:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5731,"nodeType":"RevertStatement","src":"5043:21:40"}},{"id":5750,"nodeType":"UncheckedBlock","src":"5157:143:40","statements":[{"assignments":[5734],"declarations":[{"constant":false,"id":5734,"mutability":"mutable","name":"delta","nameLocation":"5188:5:40","nodeType":"VariableDeclaration","scope":5750,"src":"5181:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5733,"name":"uint48","nodeType":"ElementaryTypeName","src":"5181:6:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5738,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5735,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"5196:8:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5736,"name":"oldNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5715,"src":"5207:8:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"5196:19:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"5181:34:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5739,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5734,"src":"5233:5:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5246:6:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5741,"name":"uint16","nodeType":"ElementaryTypeName","src":"5246:6:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":5740,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5241:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5241:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":5744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5254:3:40","memberName":"max","nodeType":"MemberAccess","src":"5241:16:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"5233:24:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5749,"nodeType":"IfStatement","src":"5229:60:40","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5746,"name":"ExcessiveInvalidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"5266:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5748,"nodeType":"RevertStatement","src":"5259:30:40"}}]},{"expression":{"id":5761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":5751,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"5310:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)))"}},"id":5756,"indexExpression":{"expression":{"id":5752,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5320:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5324:6:40","memberName":"sender","nodeType":"MemberAccess","src":"5320:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5310:21:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$","typeString":"mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref))"}},"id":5757,"indexExpression":{"id":5754,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"5332:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5310:28:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$","typeString":"mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)"}},"id":5758,"indexExpression":{"id":5755,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"5339:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5310:37:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage","typeString":"struct IAllowanceTransfer.PackedAllowance storage ref"}},"id":5759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5348:5:40","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6496,"src":"5310:43:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5760,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"5356:8:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"5310:54:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5762,"nodeType":"ExpressionStatement","src":"5310:54:40"},{"eventCall":{"arguments":[{"expression":{"id":5764,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5397:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5401:6:40","memberName":"sender","nodeType":"MemberAccess","src":"5397:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5766,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"5409:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5767,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"5416:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5768,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"5425:8:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5769,"name":"oldNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5715,"src":"5435:8:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5763,"name":"NonceInvalidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6427,"src":"5379:17:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (address,address,address,uint48,uint48)"}},"id":5770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5379:65:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5771,"nodeType":"EmitStatement","src":"5374:70:40"}]},"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"4812:34:40","text":"@inheritdoc IAllowanceTransfer"},"functionSelector":"65d9723c","id":5773,"implemented":true,"kind":"function","modifiers":[],"name":"invalidateNonces","nameLocation":"4860:16:40","nodeType":"FunctionDefinition","parameters":{"id":5712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5707,"mutability":"mutable","name":"token","nameLocation":"4885:5:40","nodeType":"VariableDeclaration","scope":5773,"src":"4877:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5706,"name":"address","nodeType":"ElementaryTypeName","src":"4877:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5709,"mutability":"mutable","name":"spender","nameLocation":"4900:7:40","nodeType":"VariableDeclaration","scope":5773,"src":"4892:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5708,"name":"address","nodeType":"ElementaryTypeName","src":"4892:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5711,"mutability":"mutable","name":"newNonce","nameLocation":"4916:8:40","nodeType":"VariableDeclaration","scope":5773,"src":"4909:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5710,"name":"uint48","nodeType":"ElementaryTypeName","src":"4909:6:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4876:49:40"},"returnParameters":{"id":5713,"nodeType":"ParameterList","parameters":[],"src":"4935:0:40"},"scope":5842,"src":"4851:600:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5840,"nodeType":"Block","src":"5776:435:40","statements":[{"assignments":[5785],"declarations":[{"constant":false,"id":5785,"mutability":"mutable","name":"nonce","nameLocation":"5793:5:40","nodeType":"VariableDeclaration","scope":5840,"src":"5786:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5784,"name":"uint48","nodeType":"ElementaryTypeName","src":"5786:6:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5788,"initialValue":{"expression":{"id":5786,"name":"details","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"5801:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}},"id":5787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5809:5:40","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6472,"src":"5801:13:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"5786:28:40"},{"assignments":[5790],"declarations":[{"constant":false,"id":5790,"mutability":"mutable","name":"token","nameLocation":"5832:5:40","nodeType":"VariableDeclaration","scope":5840,"src":"5824:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5789,"name":"address","nodeType":"ElementaryTypeName","src":"5824:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5793,"initialValue":{"expression":{"id":5791,"name":"details","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"5840:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}},"id":5792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5848:5:40","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":6466,"src":"5840:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5824:29:40"},{"assignments":[5795],"declarations":[{"constant":false,"id":5795,"mutability":"mutable","name":"amount","nameLocation":"5871:6:40","nodeType":"VariableDeclaration","scope":5840,"src":"5863:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5794,"name":"uint160","nodeType":"ElementaryTypeName","src":"5863:7:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":5798,"initialValue":{"expression":{"id":5796,"name":"details","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"5880:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}},"id":5797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5888:6:40","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6468,"src":"5880:14:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"5863:31:40"},{"assignments":[5800],"declarations":[{"constant":false,"id":5800,"mutability":"mutable","name":"expiration","nameLocation":"5911:10:40","nodeType":"VariableDeclaration","scope":5840,"src":"5904:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5799,"name":"uint48","nodeType":"ElementaryTypeName","src":"5904:6:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5803,"initialValue":{"expression":{"id":5801,"name":"details","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"5924:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}},"id":5802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5932:10:40","memberName":"expiration","nodeType":"MemberAccess","referencedDeclaration":6470,"src":"5924:18:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"5904:38:40"},{"assignments":[5806],"declarations":[{"constant":false,"id":5806,"mutability":"mutable","name":"allowed","nameLocation":"5976:7:40","nodeType":"VariableDeclaration","scope":5840,"src":"5952:31:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"},"typeName":{"id":5805,"nodeType":"UserDefinedTypeName","pathNode":{"id":5804,"name":"PackedAllowance","nameLocations":["5952:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":6497,"src":"5952:15:40"},"referencedDeclaration":6497,"src":"5952:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"}},"visibility":"internal"}],"id":5814,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":5807,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"5986:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)))"}},"id":5809,"indexExpression":{"id":5808,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5779,"src":"5996:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5986:16:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$_$","typeString":"mapping(address => mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref))"}},"id":5811,"indexExpression":{"id":5810,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"6003:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5986:23:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PackedAllowance_$6497_storage_$","typeString":"mapping(address => struct IAllowanceTransfer.PackedAllowance storage ref)"}},"id":5813,"indexExpression":{"id":5812,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"6010:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5986:32:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage","typeString":"struct IAllowanceTransfer.PackedAllowance storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5952:66:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5815,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5806,"src":"6033:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":5816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6041:5:40","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6496,"src":"6033:13:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5817,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5785,"src":"6050:5:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"6033:22:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5822,"nodeType":"IfStatement","src":"6029:49:40","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5819,"name":"InvalidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"6064:12:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6064:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5821,"nodeType":"RevertStatement","src":"6057:21:40"}},{"expression":{"arguments":[{"id":5826,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5795,"src":"6107:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5827,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"6115:10:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5828,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5785,"src":"6127:5:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":5823,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5806,"src":"6089:7:40","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":5825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6097:9:40","memberName":"updateAll","nodeType":"MemberAccess","referencedDeclaration":6798,"src":"6089:17:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PackedAllowance_$6497_storage_ptr_$_t_uint160_$_t_uint48_$_t_uint48_$returns$__$bound_to$_t_struct$_PackedAllowance_$6497_storage_ptr_$","typeString":"function (struct IAllowanceTransfer.PackedAllowance storage pointer,uint160,uint48,uint48)"}},"id":5829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6089:44:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5830,"nodeType":"ExpressionStatement","src":"6089:44:40"},{"eventCall":{"arguments":[{"id":5832,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5779,"src":"6155:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5833,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"6162:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5834,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"6169:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5835,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5795,"src":"6178:6:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5836,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"6186:10:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5837,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5785,"src":"6198:5:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5831,"name":"Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"6148:6:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint160_$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (address,address,address,uint160,uint48,uint48)"}},"id":5838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6148:56:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5839,"nodeType":"EmitStatement","src":"6143:61:40"}]},"documentation":{"id":5774,"nodeType":"StructuredDocumentation","src":"5457:219:40","text":"@notice Sets the new values for amount, expiration, and nonce.\n @dev Will check that the signed nonce is equal to the current nonce and then incrememnt the nonce value by 1.\n @dev Emits a Permit event."},"id":5841,"implemented":true,"kind":"function","modifiers":[],"name":"_updateApproval","nameLocation":"5690:15:40","nodeType":"FunctionDefinition","parameters":{"id":5782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5777,"mutability":"mutable","name":"details","nameLocation":"5727:7:40","nodeType":"VariableDeclaration","scope":5841,"src":"5706:28:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"},"typeName":{"id":5776,"nodeType":"UserDefinedTypeName","pathNode":{"id":5775,"name":"PermitDetails","nameLocations":["5706:13:40"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"5706:13:40"},"referencedDeclaration":6473,"src":"5706:13:40","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"}},"visibility":"internal"},{"constant":false,"id":5779,"mutability":"mutable","name":"owner","nameLocation":"5744:5:40","nodeType":"VariableDeclaration","scope":5841,"src":"5736:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5778,"name":"address","nodeType":"ElementaryTypeName","src":"5736:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5781,"mutability":"mutable","name":"spender","nameLocation":"5759:7:40","nodeType":"VariableDeclaration","scope":5841,"src":"5751:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5780,"name":"address","nodeType":"ElementaryTypeName","src":"5751:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5705:62:40"},"returnParameters":{"id":5783,"nodeType":"ParameterList","parameters":[],"src":"5776:0:40"},"scope":5842,"src":"5681:530:40","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":5843,"src":"547:5666:40","usedErrors":[5957,5960,6406,6411,6414,7302,7305,7308,7311]}],"src":"32:6182:40"},"id":40},"permit2/src/EIP712.sol":{"ast":{"absolutePath":"permit2/src/EIP712.sol","exportedSymbols":{"EIP712":[5938]},"id":5939,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5844,"literals":["solidity","0.8",".17"],"nodeType":"PragmaDirective","src":"32:23:41"},{"abstract":false,"baseContracts":[],"canonicalName":"EIP712","contractDependencies":[],"contractKind":"contract","documentation":{"id":5845,"nodeType":"StructuredDocumentation","src":"57:238:41","text":"@notice EIP712 helpers for permit2\n @dev Maintains cross-chain replay protection in the event of a fork\n @dev Reference: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol"},"fullyImplemented":true,"id":5938,"linearizedBaseContracts":[5938],"name":"EIP712","nameLocation":"304:6:41","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5847,"mutability":"immutable","name":"_CACHED_DOMAIN_SEPARATOR","nameLocation":"535:24:41","nodeType":"VariableDeclaration","scope":5938,"src":"509:50:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5846,"name":"bytes32","nodeType":"ElementaryTypeName","src":"509:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":5849,"mutability":"immutable","name":"_CACHED_CHAIN_ID","nameLocation":"591:16:41","nodeType":"VariableDeclaration","scope":5938,"src":"565:42:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5848,"name":"uint256","nodeType":"ElementaryTypeName","src":"565:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":true,"id":5854,"mutability":"constant","name":"_HASHED_NAME","nameLocation":"639:12:41","nodeType":"VariableDeclaration","scope":5938,"src":"614:60:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5850,"name":"bytes32","nodeType":"ElementaryTypeName","src":"614:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d697432","id":5852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"664:9:41","typeDescriptions":{"typeIdentifier":"t_stringliteral_9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a","typeString":"literal_string \"Permit2\""},"value":"Permit2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a","typeString":"literal_string \"Permit2\""}],"id":5851,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"654:9:41","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"654:20:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":5859,"mutability":"constant","name":"_TYPE_HASH","nameLocation":"705:10:41","nodeType":"VariableDeclaration","scope":5938,"src":"680:126:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5855,"name":"bytes32","nodeType":"ElementaryTypeName","src":"680:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":5857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"736:69:41","typeDescriptions":{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""}],"id":5856,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"726:9:41","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"726:80:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":5874,"nodeType":"Block","src":"827:133:41","statements":[{"expression":{"id":5865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5862,"name":"_CACHED_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"837:16:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5863,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"856:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"862:7:41","memberName":"chainid","nodeType":"MemberAccess","src":"856:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"837:32:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5866,"nodeType":"ExpressionStatement","src":"837:32:41"},{"expression":{"id":5872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5867,"name":"_CACHED_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5847,"src":"879:24:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5869,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5859,"src":"928:10:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5870,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5854,"src":"940:12:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5868,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"906:21:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) view returns (bytes32)"}},"id":5871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"906:47:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"879:74:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5873,"nodeType":"ExpressionStatement","src":"879:74:41"}]},"id":5875,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5860,"nodeType":"ParameterList","parameters":[],"src":"824:2:41"},"returnParameters":{"id":5861,"nodeType":"ParameterList","parameters":[],"src":"827:0:41"},"scope":5938,"src":"813:147:41","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5892,"nodeType":"Block","src":"1181:158:41","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5881,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1198:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1204:7:41","memberName":"chainid","nodeType":"MemberAccess","src":"1198:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5883,"name":"_CACHED_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"1215:16:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1198:33:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5887,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5859,"src":"1307:10:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5888,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5854,"src":"1319:12:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5886,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"1285:21:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) view returns (bytes32)"}},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1285:47:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1198:134:41","trueExpression":{"id":5885,"name":"_CACHED_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5847,"src":"1246:24:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5880,"id":5891,"nodeType":"Return","src":"1191:141:41"}]},"documentation":{"id":5876,"nodeType":"StructuredDocumentation","src":"966:152:41","text":"@notice Returns the domain separator for the current chain.\n @dev Uses cached version if chainid and address are unchanged from construction."},"functionSelector":"3644e515","id":5893,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"1132:16:41","nodeType":"FunctionDefinition","parameters":{"id":5877,"nodeType":"ParameterList","parameters":[],"src":"1148:2:41"},"returnParameters":{"id":5880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5893,"src":"1172:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1172:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1171:9:41"},"scope":5938,"src":"1123:216:41","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":5917,"nodeType":"Block","src":"1533:95:41","statements":[{"expression":{"arguments":[{"arguments":[{"id":5906,"name":"typeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5896,"src":"1571:8:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5907,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"1581:8:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":5908,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1591:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1597:7:41","memberName":"chainid","nodeType":"MemberAccess","src":"1591:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5912,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1614:4:41","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$5938","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$5938","typeString":"contract EIP712"}],"id":5911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1606:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5910,"name":"address","nodeType":"ElementaryTypeName","src":"1606:7:41","typeDescriptions":{}}},"id":5913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1606:13:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5904,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1560:3:41","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1564:6:41","memberName":"encode","nodeType":"MemberAccess","src":"1560:10:41","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1560:60:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5903,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1550:9:41","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1550:71:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5902,"id":5916,"nodeType":"Return","src":"1543:78:41"}]},"documentation":{"id":5894,"nodeType":"StructuredDocumentation","src":"1345:85:41","text":"@notice Builds a domain separator using the current chainId and contract address."},"id":5918,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"1444:21:41","nodeType":"FunctionDefinition","parameters":{"id":5899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5896,"mutability":"mutable","name":"typeHash","nameLocation":"1474:8:41","nodeType":"VariableDeclaration","scope":5918,"src":"1466:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5895,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1466:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5898,"mutability":"mutable","name":"nameHash","nameLocation":"1492:8:41","nodeType":"VariableDeclaration","scope":5918,"src":"1484:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5897,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1484:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1465:36:41"},"returnParameters":{"id":5902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5918,"src":"1524:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1524:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1523:9:41"},"scope":5938,"src":"1435:193:41","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5936,"nodeType":"Block","src":"1759:93:41","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":5929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1803:10:41","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":5930,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"1815:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":5931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1815:18:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5932,"name":"dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5921,"src":"1835:8:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5927,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1786:3:41","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1790:12:41","memberName":"encodePacked","nodeType":"MemberAccess","src":"1786:16:41","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1786:58:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5926,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1776:9:41","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1776:69:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5925,"id":5935,"nodeType":"Return","src":"1769:76:41"}]},"documentation":{"id":5919,"nodeType":"StructuredDocumentation","src":"1634:46:41","text":"@notice Creates an EIP-712 typed data hash"},"id":5937,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedData","nameLocation":"1694:14:41","nodeType":"FunctionDefinition","parameters":{"id":5922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5921,"mutability":"mutable","name":"dataHash","nameLocation":"1717:8:41","nodeType":"VariableDeclaration","scope":5937,"src":"1709:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5920,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1709:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1708:18:41"},"returnParameters":{"id":5925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5937,"src":"1750:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5923,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1750:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1749:9:41"},"scope":5938,"src":"1685:167:41","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5939,"src":"295:1559:41","usedErrors":[]}],"src":"32:1823:41"},"id":41},"permit2/src/Permit2.sol":{"ast":{"absolutePath":"permit2/src/Permit2.sol","exportedSymbols":{"AllowanceTransfer":[5842],"Permit2":[5950],"SignatureTransfer":[6398]},"id":5951,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5940,"literals":["solidity","0.8",".17"],"nodeType":"PragmaDirective","src":"32:23:42"},{"absolutePath":"permit2/src/SignatureTransfer.sol","file":"./SignatureTransfer.sol","id":5942,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5951,"sourceUnit":6399,"src":"57:58:42","symbolAliases":[{"foreign":{"id":5941,"name":"SignatureTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6398,"src":"65:17:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/AllowanceTransfer.sol","file":"./AllowanceTransfer.sol","id":5944,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5951,"sourceUnit":5843,"src":"116:58:42","symbolAliases":[{"foreign":{"id":5943,"name":"AllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"124:17:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5946,"name":"SignatureTransfer","nameLocations":["405:17:42"],"nodeType":"IdentifierPath","referencedDeclaration":6398,"src":"405:17:42"},"id":5947,"nodeType":"InheritanceSpecifier","src":"405:17:42"},{"baseName":{"id":5948,"name":"AllowanceTransfer","nameLocations":["424:17:42"],"nodeType":"IdentifierPath","referencedDeclaration":5842,"src":"424:17:42"},"id":5949,"nodeType":"InheritanceSpecifier","src":"424:17:42"}],"canonicalName":"Permit2","contractDependencies":[],"contractKind":"contract","documentation":{"id":5945,"nodeType":"StructuredDocumentation","src":"176:209:42","text":"@notice Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.\n @dev Users must approve Permit2 before calling any of the transfer functions."},"fullyImplemented":true,"id":5950,"linearizedBaseContracts":[5950,5842,6398,5938,6600,6745],"name":"Permit2","nameLocation":"394:7:42","nodeType":"ContractDefinition","nodes":[],"scope":5951,"src":"385:152:42","usedErrors":[5957,5960,6406,6411,6414,6621,6624,7302,7305,7308,7311]}],"src":"32:506:42"},"id":42},"permit2/src/PermitErrors.sol":{"ast":{"absolutePath":"permit2/src/PermitErrors.sol","exportedSymbols":{"InvalidNonce":[5960],"SignatureExpired":[5957]},"id":5961,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5952,"literals":["solidity","0.8",".17"],"nodeType":"PragmaDirective","src":"32:23:43"},{"documentation":{"id":5953,"nodeType":"StructuredDocumentation","src":"149:154:43","text":"@notice Thrown when validating an inputted signature that is stale\n @param signatureDeadline The timestamp at which a signature is no longer valid"},"errorSelector":"cd21db4f","id":5957,"name":"SignatureExpired","nameLocation":"309:16:43","nodeType":"ErrorDefinition","parameters":{"id":5956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5955,"mutability":"mutable","name":"signatureDeadline","nameLocation":"334:17:43","nodeType":"VariableDeclaration","scope":5957,"src":"326:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5954,"name":"uint256","nodeType":"ElementaryTypeName","src":"326:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"325:27:43"},"src":"303:50:43"},{"documentation":{"id":5958,"nodeType":"StructuredDocumentation","src":"355:77:43","text":"@notice Thrown when validating that the inputted nonce has not been used"},"errorSelector":"756688fe","id":5960,"name":"InvalidNonce","nameLocation":"438:12:43","nodeType":"ErrorDefinition","parameters":{"id":5959,"nodeType":"ParameterList","parameters":[],"src":"450:2:43"},"src":"432:21:43"}],"src":"32:422:43"},"id":43},"permit2/src/SignatureTransfer.sol":{"ast":{"absolutePath":"permit2/src/SignatureTransfer.sol","exportedSymbols":{"EIP712":[5938],"ERC20":[8531],"ISignatureTransfer":[6745],"InvalidNonce":[5960],"PermitHash":[7264],"SafeTransferLib":[9180],"SignatureExpired":[5957],"SignatureTransfer":[6398],"SignatureVerification":[7464]},"id":6399,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5962,"literals":["solidity","0.8",".17"],"nodeType":"PragmaDirective","src":"32:23:44"},{"absolutePath":"permit2/src/interfaces/ISignatureTransfer.sol","file":"./interfaces/ISignatureTransfer.sol","id":5964,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6399,"sourceUnit":6746,"src":"57:71:44","symbolAliases":[{"foreign":{"id":5963,"name":"ISignatureTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6745,"src":"65:18:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/PermitErrors.sol","file":"./PermitErrors.sol","id":5967,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6399,"sourceUnit":5961,"src":"129:66:44","symbolAliases":[{"foreign":{"id":5965,"name":"SignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"137:16:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5966,"name":"InvalidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"155:12:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"solmate/src/tokens/ERC20.sol","id":5969,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6399,"sourceUnit":8532,"src":"196:51:44","symbolAliases":[{"foreign":{"id":5968,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"204:5:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solmate/src/utils/SafeTransferLib.sol","file":"solmate/src/utils/SafeTransferLib.sol","id":5971,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6399,"sourceUnit":9181,"src":"248:70:44","symbolAliases":[{"foreign":{"id":5970,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9180,"src":"256:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/libraries/SignatureVerification.sol","file":"./libraries/SignatureVerification.sol","id":5973,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6399,"sourceUnit":7465,"src":"319:76:44","symbolAliases":[{"foreign":{"id":5972,"name":"SignatureVerification","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7464,"src":"327:21:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/libraries/PermitHash.sol","file":"./libraries/PermitHash.sol","id":5975,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6399,"sourceUnit":7265,"src":"396:54:44","symbolAliases":[{"foreign":{"id":5974,"name":"PermitHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"404:10:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/EIP712.sol","file":"./EIP712.sol","id":5977,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6399,"sourceUnit":5939,"src":"451:36:44","symbolAliases":[{"foreign":{"id":5976,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"459:6:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5978,"name":"ISignatureTransfer","nameLocations":["519:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":6745,"src":"519:18:44"},"id":5979,"nodeType":"InheritanceSpecifier","src":"519:18:44"},{"baseName":{"id":5980,"name":"EIP712","nameLocations":["539:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":5938,"src":"539:6:44"},"id":5981,"nodeType":"InheritanceSpecifier","src":"539:6:44"}],"canonicalName":"SignatureTransfer","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6398,"linearizedBaseContracts":[6398,5938,6745],"name":"SignatureTransfer","nameLocation":"498:17:44","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5984,"libraryName":{"id":5982,"name":"SignatureVerification","nameLocations":["558:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":7464,"src":"558:21:44"},"nodeType":"UsingForDirective","src":"552:38:44","typeName":{"id":5983,"name":"bytes","nodeType":"ElementaryTypeName","src":"584:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"global":false,"id":5988,"libraryName":{"id":5985,"name":"SafeTransferLib","nameLocations":["601:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":9180,"src":"601:15:44"},"nodeType":"UsingForDirective","src":"595:32:44","typeName":{"id":5987,"nodeType":"UserDefinedTypeName","pathNode":{"id":5986,"name":"ERC20","nameLocations":["621:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"621:5:44"},"referencedDeclaration":8531,"src":"621:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}}},{"global":false,"id":5992,"libraryName":{"id":5989,"name":"PermitHash","nameLocations":["638:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":7264,"src":"638:10:44"},"nodeType":"UsingForDirective","src":"632:40:44","typeName":{"id":5991,"nodeType":"UserDefinedTypeName","pathNode":{"id":5990,"name":"PermitTransferFrom","nameLocations":["653:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"653:18:44"},"referencedDeclaration":6646,"src":"653:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}}},{"global":false,"id":5996,"libraryName":{"id":5993,"name":"PermitHash","nameLocations":["683:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":7264,"src":"683:10:44"},"nodeType":"UsingForDirective","src":"677:45:44","typeName":{"id":5995,"nodeType":"UserDefinedTypeName","pathNode":{"id":5994,"name":"PermitBatchTransferFrom","nameLocations":["698:23:44"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"698:23:44"},"referencedDeclaration":6660,"src":"698:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}}},{"baseFunctions":[6670],"constant":false,"documentation":{"id":5997,"nodeType":"StructuredDocumentation","src":"728:34:44","text":"@inheritdoc ISignatureTransfer"},"functionSelector":"4fe02b44","id":6003,"mutability":"mutable","name":"nonceBitmap","nameLocation":"822:11:44","nodeType":"VariableDeclaration","scope":6398,"src":"767:66:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":6002,"keyType":{"id":5998,"name":"address","nodeType":"ElementaryTypeName","src":"775:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"767:47:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":6001,"keyType":{"id":5999,"name":"uint256","nodeType":"ElementaryTypeName","src":"794:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"786:27:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":6000,"name":"uint256","nodeType":"ElementaryTypeName","src":"805:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"baseFunctions":[6684],"body":{"id":6027,"nodeType":"Block","src":"1080:94:44","statements":[{"expression":{"arguments":[{"id":6018,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"1110:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},{"id":6019,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6010,"src":"1118:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"}},{"id":6020,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6012,"src":"1135:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6021,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"1142:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1149:4:44","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":7033,"src":"1142:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PermitTransferFrom_$6646_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PermitTransferFrom_$6646_memory_ptr_$","typeString":"function (struct ISignatureTransfer.PermitTransferFrom memory) view returns (bytes32)"}},"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1142:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6024,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6014,"src":"1157:9:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"},{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6017,"name":"_permitTransferFrom","nodeType":"Identifier","overloadedDeclarations":[6131,6303],"referencedDeclaration":6131,"src":"1090:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PermitTransferFrom_$6646_memory_ptr_$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct ISignatureTransfer.PermitTransferFrom memory,struct ISignatureTransfer.SignatureTransferDetails calldata,address,bytes32,bytes calldata)"}},"id":6025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1090:77:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6026,"nodeType":"ExpressionStatement","src":"1090:77:44"}]},"documentation":{"id":6004,"nodeType":"StructuredDocumentation","src":"840:34:44","text":"@inheritdoc ISignatureTransfer"},"functionSelector":"30f28b7a","id":6028,"implemented":true,"kind":"function","modifiers":[],"name":"permitTransferFrom","nameLocation":"888:18:44","nodeType":"FunctionDefinition","parameters":{"id":6015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6007,"mutability":"mutable","name":"permit","nameLocation":"942:6:44","nodeType":"VariableDeclaration","scope":6028,"src":"916:32:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":6006,"nodeType":"UserDefinedTypeName","pathNode":{"id":6005,"name":"PermitTransferFrom","nameLocations":["916:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"916:18:44"},"referencedDeclaration":6646,"src":"916:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6010,"mutability":"mutable","name":"transferDetails","nameLocation":"992:15:44","nodeType":"VariableDeclaration","scope":6028,"src":"958:49:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"},"typeName":{"id":6009,"nodeType":"UserDefinedTypeName","pathNode":{"id":6008,"name":"SignatureTransferDetails","nameLocations":["958:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"958:24:44"},"referencedDeclaration":6651,"src":"958:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"visibility":"internal"},{"constant":false,"id":6012,"mutability":"mutable","name":"owner","nameLocation":"1025:5:44","nodeType":"VariableDeclaration","scope":6028,"src":"1017:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6011,"name":"address","nodeType":"ElementaryTypeName","src":"1017:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6014,"mutability":"mutable","name":"signature","nameLocation":"1055:9:44","nodeType":"VariableDeclaration","scope":6028,"src":"1040:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6013,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"906:164:44"},"returnParameters":{"id":6016,"nodeType":"ParameterList","parameters":[],"src":"1080:0:44"},"scope":6398,"src":"879:295:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[6702],"body":{"id":6058,"nodeType":"Block","src":"1495:153:44","statements":[{"expression":{"arguments":[{"id":6047,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6032,"src":"1538:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},{"id":6048,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6035,"src":"1546:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"}},{"id":6049,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"1563:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6052,"name":"witness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"1593:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6053,"name":"witnessTypeString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"1602:17:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"expression":{"id":6050,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6032,"src":"1570:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1577:15:44","memberName":"hashWithWitness","nodeType":"MemberAccess","referencedDeclaration":7146,"src":"1570:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PermitTransferFrom_$6646_memory_ptr_$_t_bytes32_$_t_string_calldata_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PermitTransferFrom_$6646_memory_ptr_$","typeString":"function (struct ISignatureTransfer.PermitTransferFrom memory,bytes32,string calldata) view returns (bytes32)"}},"id":6054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1570:50:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6055,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"1622:9:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"},{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6046,"name":"_permitTransferFrom","nodeType":"Identifier","overloadedDeclarations":[6131,6303],"referencedDeclaration":6131,"src":"1505:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PermitTransferFrom_$6646_memory_ptr_$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct ISignatureTransfer.PermitTransferFrom memory,struct ISignatureTransfer.SignatureTransferDetails calldata,address,bytes32,bytes calldata)"}},"id":6056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1505:136:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6057,"nodeType":"ExpressionStatement","src":"1505:136:44"}]},"documentation":{"id":6029,"nodeType":"StructuredDocumentation","src":"1180:34:44","text":"@inheritdoc ISignatureTransfer"},"functionSelector":"137c29fe","id":6059,"implemented":true,"kind":"function","modifiers":[],"name":"permitWitnessTransferFrom","nameLocation":"1228:25:44","nodeType":"FunctionDefinition","parameters":{"id":6044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6032,"mutability":"mutable","name":"permit","nameLocation":"1289:6:44","nodeType":"VariableDeclaration","scope":6059,"src":"1263:32:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":6031,"nodeType":"UserDefinedTypeName","pathNode":{"id":6030,"name":"PermitTransferFrom","nameLocations":["1263:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"1263:18:44"},"referencedDeclaration":6646,"src":"1263:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6035,"mutability":"mutable","name":"transferDetails","nameLocation":"1339:15:44","nodeType":"VariableDeclaration","scope":6059,"src":"1305:49:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"},"typeName":{"id":6034,"nodeType":"UserDefinedTypeName","pathNode":{"id":6033,"name":"SignatureTransferDetails","nameLocations":["1305:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"1305:24:44"},"referencedDeclaration":6651,"src":"1305:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"visibility":"internal"},{"constant":false,"id":6037,"mutability":"mutable","name":"owner","nameLocation":"1372:5:44","nodeType":"VariableDeclaration","scope":6059,"src":"1364:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6036,"name":"address","nodeType":"ElementaryTypeName","src":"1364:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6039,"mutability":"mutable","name":"witness","nameLocation":"1395:7:44","nodeType":"VariableDeclaration","scope":6059,"src":"1387:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6038,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1387:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6041,"mutability":"mutable","name":"witnessTypeString","nameLocation":"1428:17:44","nodeType":"VariableDeclaration","scope":6059,"src":"1412:33:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6040,"name":"string","nodeType":"ElementaryTypeName","src":"1412:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6043,"mutability":"mutable","name":"signature","nameLocation":"1470:9:44","nodeType":"VariableDeclaration","scope":6059,"src":"1455:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6042,"name":"bytes","nodeType":"ElementaryTypeName","src":"1455:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1253:232:44"},"returnParameters":{"id":6045,"nodeType":"ParameterList","parameters":[],"src":"1495:0:44"},"scope":6398,"src":"1219:429:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6130,"nodeType":"Block","src":"2302:477:44","statements":[{"assignments":[6076],"declarations":[{"constant":false,"id":6076,"mutability":"mutable","name":"requestedAmount","nameLocation":"2320:15:44","nodeType":"VariableDeclaration","scope":6130,"src":"2312:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6075,"name":"uint256","nodeType":"ElementaryTypeName","src":"2312:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6079,"initialValue":{"expression":{"id":6077,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"2338:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"}},"id":6078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2354:15:44","memberName":"requestedAmount","nodeType":"MemberAccess","referencedDeclaration":6650,"src":"2338:31:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2312:57:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6080,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2384:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2390:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"2384:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":6082,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2402:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2409:8:44","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6645,"src":"2402:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2384:33:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6090,"nodeType":"IfStatement","src":"2380:79:44","trueBody":{"errorCall":{"arguments":[{"expression":{"id":6086,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2443:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2450:8:44","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6645,"src":"2443:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6085,"name":"SignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"2426:16:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2426:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6089,"nodeType":"RevertStatement","src":"2419:40:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6091,"name":"requestedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"2473:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"expression":{"id":6092,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2491:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2498:9:44","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"2491:16:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}},"id":6094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2508:6:44","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6637,"src":"2491:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2473:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6102,"nodeType":"IfStatement","src":"2469:92:44","trueBody":{"errorCall":{"arguments":[{"expression":{"expression":{"id":6097,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2537:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2544:9:44","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"2537:16:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}},"id":6099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2554:6:44","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6637,"src":"2537:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6096,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6621,"src":"2523:13:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2523:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6101,"nodeType":"RevertStatement","src":"2516:45:44"}},{"expression":{"arguments":[{"id":6104,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"2591:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6105,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2598:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2605:5:44","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6643,"src":"2598:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6103,"name":"_useUnorderedNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"2572:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2572:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6108,"nodeType":"ExpressionStatement","src":"2572:39:44"},{"expression":{"arguments":[{"arguments":[{"id":6113,"name":"dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"2654:8:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6112,"name":"_hashTypedData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"2639:14:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":6114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6115,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"2665:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6109,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6072,"src":"2622:9:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2632:6:44","memberName":"verify","nodeType":"MemberAccess","referencedDeclaration":7463,"src":"2622:16:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$_t_bytes32_$_t_address_$returns$__$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,bytes32,address) view"}},"id":6116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2622:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6117,"nodeType":"ExpressionStatement","src":"2622:49:44"},{"expression":{"arguments":[{"id":6124,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"2729:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6125,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"2736:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"}},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2752:2:44","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":6648,"src":"2736:18:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6127,"name":"requestedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"2756:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"expression":{"id":6119,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2688:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":6120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2695:9:44","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"2688:16:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}},"id":6121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2705:5:44","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":6635,"src":"2688:22:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6118,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"2682:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":6122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2682:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":6123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2712:16:44","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9139,"src":"2682:46:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$8531_$","typeString":"function (contract ERC20,address,address,uint256)"}},"id":6128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2682:90:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6129,"nodeType":"ExpressionStatement","src":"2682:90:44"}]},"documentation":{"id":6060,"nodeType":"StructuredDocumentation","src":"1654:416:44","text":"@notice Transfers a token using a signed permit message.\n @param permit The permit data signed over by the owner\n @param dataHash The EIP-712 hash of permit data to include when checking signature\n @param owner The owner of the tokens to transfer\n @param transferDetails The spender's requested transfer details for the permitted token\n @param signature The signature to verify"},"id":6131,"implemented":true,"kind":"function","modifiers":[],"name":"_permitTransferFrom","nameLocation":"2084:19:44","nodeType":"FunctionDefinition","parameters":{"id":6073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6063,"mutability":"mutable","name":"permit","nameLocation":"2139:6:44","nodeType":"VariableDeclaration","scope":6131,"src":"2113:32:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":6062,"nodeType":"UserDefinedTypeName","pathNode":{"id":6061,"name":"PermitTransferFrom","nameLocations":["2113:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"2113:18:44"},"referencedDeclaration":6646,"src":"2113:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6066,"mutability":"mutable","name":"transferDetails","nameLocation":"2189:15:44","nodeType":"VariableDeclaration","scope":6131,"src":"2155:49:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"},"typeName":{"id":6065,"nodeType":"UserDefinedTypeName","pathNode":{"id":6064,"name":"SignatureTransferDetails","nameLocations":["2155:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"2155:24:44"},"referencedDeclaration":6651,"src":"2155:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"visibility":"internal"},{"constant":false,"id":6068,"mutability":"mutable","name":"owner","nameLocation":"2222:5:44","nodeType":"VariableDeclaration","scope":6131,"src":"2214:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6067,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6070,"mutability":"mutable","name":"dataHash","nameLocation":"2245:8:44","nodeType":"VariableDeclaration","scope":6131,"src":"2237:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6069,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2237:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6072,"mutability":"mutable","name":"signature","nameLocation":"2278:9:44","nodeType":"VariableDeclaration","scope":6131,"src":"2263:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6071,"name":"bytes","nodeType":"ElementaryTypeName","src":"2263:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2103:190:44"},"returnParameters":{"id":6074,"nodeType":"ParameterList","parameters":[],"src":"2302:0:44"},"scope":6398,"src":"2075:704:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[6717],"body":{"id":6156,"nodeType":"Block","src":"3032:94:44","statements":[{"expression":{"arguments":[{"id":6147,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6135,"src":"3062:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},{"id":6148,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"3070:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata"}},{"id":6149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6141,"src":"3087:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6150,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6135,"src":"3094:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":6151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3101:4:44","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":7101,"src":"3094:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PermitBatchTransferFrom_$6660_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PermitBatchTransferFrom_$6660_memory_ptr_$","typeString":"function (struct ISignatureTransfer.PermitBatchTransferFrom memory) view returns (bytes32)"}},"id":6152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3094:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6153,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"3109:9:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"},{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6146,"name":"_permitTransferFrom","nodeType":"Identifier","overloadedDeclarations":[6131,6303],"referencedDeclaration":6303,"src":"3042:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PermitBatchTransferFrom_$6660_memory_ptr_$_t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct ISignatureTransfer.PermitBatchTransferFrom memory,struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata,address,bytes32,bytes calldata)"}},"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3042:77:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6155,"nodeType":"ExpressionStatement","src":"3042:77:44"}]},"documentation":{"id":6132,"nodeType":"StructuredDocumentation","src":"2785:34:44","text":"@inheritdoc ISignatureTransfer"},"functionSelector":"edd9444b","id":6157,"implemented":true,"kind":"function","modifiers":[],"name":"permitTransferFrom","nameLocation":"2833:18:44","nodeType":"FunctionDefinition","parameters":{"id":6144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6135,"mutability":"mutable","name":"permit","nameLocation":"2892:6:44","nodeType":"VariableDeclaration","scope":6157,"src":"2861:37:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":6134,"nodeType":"UserDefinedTypeName","pathNode":{"id":6133,"name":"PermitBatchTransferFrom","nameLocations":["2861:23:44"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"2861:23:44"},"referencedDeclaration":6660,"src":"2861:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6139,"mutability":"mutable","name":"transferDetails","nameLocation":"2944:15:44","nodeType":"VariableDeclaration","scope":6157,"src":"2908:51:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"},"typeName":{"baseType":{"id":6137,"nodeType":"UserDefinedTypeName","pathNode":{"id":6136,"name":"SignatureTransferDetails","nameLocations":["2908:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"2908:24:44"},"referencedDeclaration":6651,"src":"2908:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"id":6138,"nodeType":"ArrayTypeName","src":"2908:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":6141,"mutability":"mutable","name":"owner","nameLocation":"2977:5:44","nodeType":"VariableDeclaration","scope":6157,"src":"2969:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6140,"name":"address","nodeType":"ElementaryTypeName","src":"2969:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6143,"mutability":"mutable","name":"signature","nameLocation":"3007:9:44","nodeType":"VariableDeclaration","scope":6157,"src":"2992:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6142,"name":"bytes","nodeType":"ElementaryTypeName","src":"2992:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2851:171:44"},"returnParameters":{"id":6145,"nodeType":"ParameterList","parameters":[],"src":"3032:0:44"},"scope":6398,"src":"2824:302:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[6736],"body":{"id":6188,"nodeType":"Block","src":"3454:153:44","statements":[{"expression":{"arguments":[{"id":6177,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"3497:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},{"id":6178,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6165,"src":"3505:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata"}},{"id":6179,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6167,"src":"3522:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6182,"name":"witness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6169,"src":"3552:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6183,"name":"witnessTypeString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6171,"src":"3561:17:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"expression":{"id":6180,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"3529:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":6181,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3536:15:44","memberName":"hashWithWitness","nodeType":"MemberAccess","referencedDeclaration":7229,"src":"3529:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PermitBatchTransferFrom_$6660_memory_ptr_$_t_bytes32_$_t_string_calldata_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PermitBatchTransferFrom_$6660_memory_ptr_$","typeString":"function (struct ISignatureTransfer.PermitBatchTransferFrom memory,bytes32,string calldata) view returns (bytes32)"}},"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3529:50:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6185,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"3581:9:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"},{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6176,"name":"_permitTransferFrom","nodeType":"Identifier","overloadedDeclarations":[6131,6303],"referencedDeclaration":6303,"src":"3464:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PermitBatchTransferFrom_$6660_memory_ptr_$_t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct ISignatureTransfer.PermitBatchTransferFrom memory,struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata,address,bytes32,bytes calldata)"}},"id":6186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3464:136:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6187,"nodeType":"ExpressionStatement","src":"3464:136:44"}]},"documentation":{"id":6158,"nodeType":"StructuredDocumentation","src":"3132:34:44","text":"@inheritdoc ISignatureTransfer"},"functionSelector":"fe8ec1a7","id":6189,"implemented":true,"kind":"function","modifiers":[],"name":"permitWitnessTransferFrom","nameLocation":"3180:25:44","nodeType":"FunctionDefinition","parameters":{"id":6174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6161,"mutability":"mutable","name":"permit","nameLocation":"3246:6:44","nodeType":"VariableDeclaration","scope":6189,"src":"3215:37:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":6160,"nodeType":"UserDefinedTypeName","pathNode":{"id":6159,"name":"PermitBatchTransferFrom","nameLocations":["3215:23:44"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"3215:23:44"},"referencedDeclaration":6660,"src":"3215:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6165,"mutability":"mutable","name":"transferDetails","nameLocation":"3298:15:44","nodeType":"VariableDeclaration","scope":6189,"src":"3262:51:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"},"typeName":{"baseType":{"id":6163,"nodeType":"UserDefinedTypeName","pathNode":{"id":6162,"name":"SignatureTransferDetails","nameLocations":["3262:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"3262:24:44"},"referencedDeclaration":6651,"src":"3262:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"id":6164,"nodeType":"ArrayTypeName","src":"3262:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":6167,"mutability":"mutable","name":"owner","nameLocation":"3331:5:44","nodeType":"VariableDeclaration","scope":6189,"src":"3323:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6166,"name":"address","nodeType":"ElementaryTypeName","src":"3323:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6169,"mutability":"mutable","name":"witness","nameLocation":"3354:7:44","nodeType":"VariableDeclaration","scope":6189,"src":"3346:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3346:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6171,"mutability":"mutable","name":"witnessTypeString","nameLocation":"3387:17:44","nodeType":"VariableDeclaration","scope":6189,"src":"3371:33:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6170,"name":"string","nodeType":"ElementaryTypeName","src":"3371:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6173,"mutability":"mutable","name":"signature","nameLocation":"3429:9:44","nodeType":"VariableDeclaration","scope":6189,"src":"3414:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6172,"name":"bytes","nodeType":"ElementaryTypeName","src":"3414:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3205:239:44"},"returnParameters":{"id":6175,"nodeType":"ParameterList","parameters":[],"src":"3454:0:44"},"scope":6398,"src":"3171:436:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6302,"nodeType":"Block","src":"4171:960:44","statements":[{"assignments":[6207],"declarations":[{"constant":false,"id":6207,"mutability":"mutable","name":"numPermitted","nameLocation":"4189:12:44","nodeType":"VariableDeclaration","scope":6302,"src":"4181:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6206,"name":"uint256","nodeType":"ElementaryTypeName","src":"4181:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6211,"initialValue":{"expression":{"expression":{"id":6208,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"4204:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":6209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4211:9:44","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6655,"src":"4204:16:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_memory_ptr_$dyn_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory[] memory"}},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4221:6:44","memberName":"length","nodeType":"MemberAccess","src":"4204:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4181:46:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6212,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4242:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4248:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"4242:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":6214,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"4260:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":6215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4267:8:44","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6659,"src":"4260:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4242:33:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6222,"nodeType":"IfStatement","src":"4238:79:44","trueBody":{"errorCall":{"arguments":[{"expression":{"id":6218,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"4301:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":6219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4308:8:44","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6659,"src":"4301:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6217,"name":"SignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"4284:16:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4284:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6221,"nodeType":"RevertStatement","src":"4277:40:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6223,"name":"numPermitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6207,"src":"4331:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":6224,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"4347:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata"}},"id":6225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4363:6:44","memberName":"length","nodeType":"MemberAccess","src":"4347:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4331:38:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6230,"nodeType":"IfStatement","src":"4327:67:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6227,"name":"LengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6624,"src":"4378:14:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":6228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4378:16:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6229,"nodeType":"RevertStatement","src":"4371:23:44"}},{"expression":{"arguments":[{"id":6232,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6199,"src":"4424:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6233,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"4431:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":6234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4438:5:44","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6657,"src":"4431:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6231,"name":"_useUnorderedNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"4405:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4405:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6236,"nodeType":"ExpressionStatement","src":"4405:39:44"},{"expression":{"arguments":[{"arguments":[{"id":6241,"name":"dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"4486:8:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6240,"name":"_hashTypedData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"4471:14:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":6242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4471:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6243,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6199,"src":"4497:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6237,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"4454:9:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4464:6:44","memberName":"verify","nodeType":"MemberAccess","referencedDeclaration":7463,"src":"4454:16:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$_t_bytes32_$_t_address_$returns$__$bound_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,bytes32,address) view"}},"id":6244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4454:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6245,"nodeType":"ExpressionStatement","src":"4454:49:44"},{"id":6301,"nodeType":"UncheckedBlock","src":"4514:611:44","statements":[{"body":{"id":6299,"nodeType":"Block","src":"4581:534:44","statements":[{"assignments":[6258],"declarations":[{"constant":false,"id":6258,"mutability":"mutable","name":"permitted","nameLocation":"4623:9:44","nodeType":"VariableDeclaration","scope":6299,"src":"4599:33:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"},"typeName":{"id":6257,"nodeType":"UserDefinedTypeName","pathNode":{"id":6256,"name":"TokenPermissions","nameLocations":["4599:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":6638,"src":"4599:16:44"},"referencedDeclaration":6638,"src":"4599:16:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"}},"visibility":"internal"}],"id":6263,"initialValue":{"baseExpression":{"expression":{"id":6259,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"4635:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":6260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4642:9:44","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6655,"src":"4635:16:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_memory_ptr_$dyn_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory[] memory"}},"id":6262,"indexExpression":{"id":6261,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"4652:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4635:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}},"nodeType":"VariableDeclarationStatement","src":"4599:55:44"},{"assignments":[6265],"declarations":[{"constant":false,"id":6265,"mutability":"mutable","name":"requestedAmount","nameLocation":"4680:15:44","nodeType":"VariableDeclaration","scope":6299,"src":"4672:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6264,"name":"uint256","nodeType":"ElementaryTypeName","src":"4672:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6270,"initialValue":{"expression":{"baseExpression":{"id":6266,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"4698:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata"}},"id":6268,"indexExpression":{"id":6267,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"4714:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4698:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"}},"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4717:15:44","memberName":"requestedAmount","nodeType":"MemberAccess","referencedDeclaration":6650,"src":"4698:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4672:60:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6271,"name":"requestedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"4755:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":6272,"name":"permitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"4773:9:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}},"id":6273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4783:6:44","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6637,"src":"4773:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6280,"nodeType":"IfStatement","src":"4751:78:44","trueBody":{"errorCall":{"arguments":[{"expression":{"id":6276,"name":"permitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"4812:9:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}},"id":6277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4822:6:44","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6637,"src":"4812:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6275,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6621,"src":"4798:13:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4798:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6279,"nodeType":"RevertStatement","src":"4791:38:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6281,"name":"requestedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"4852:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4871:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4852:20:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6298,"nodeType":"IfStatement","src":"4848:253:44","trueBody":{"id":6297,"nodeType":"Block","src":"4874:227:44","statements":[{"expression":{"arguments":[{"id":6289,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6199,"src":"5036:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":6290,"name":"transferDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"5043:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata[] calldata"}},"id":6292,"indexExpression":{"id":6291,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"5059:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5043:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails calldata"}},"id":6293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5062:2:44","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":6648,"src":"5043:21:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6294,"name":"requestedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"5066:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6285,"name":"permitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"5002:9:44","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}},"id":6286,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5012:5:44","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":6635,"src":"5002:15:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6284,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"4996:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8531_$","typeString":"type(contract ERC20)"}},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4996:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"id":6288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5019:16:44","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9139,"src":"4996:39:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20_$8531_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$8531_$","typeString":"function (contract ERC20,address,address,uint256)"}},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4996:86:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6296,"nodeType":"ExpressionStatement","src":"4996:86:44"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6250,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"4558:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6251,"name":"numPermitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6207,"src":"4562:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4558:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6300,"initializationExpression":{"assignments":[6247],"declarations":[{"constant":false,"id":6247,"mutability":"mutable","name":"i","nameLocation":"4551:1:44","nodeType":"VariableDeclaration","scope":6300,"src":"4543:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6246,"name":"uint256","nodeType":"ElementaryTypeName","src":"4543:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6249,"initialValue":{"hexValue":"30","id":6248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4555:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4543:13:44"},"loopExpression":{"expression":{"id":6254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4576:3:44","subExpression":{"id":6253,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"4578:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6255,"nodeType":"ExpressionStatement","src":"4576:3:44"},"nodeType":"ForStatement","src":"4538:577:44"}]}]},"documentation":{"id":6190,"nodeType":"StructuredDocumentation","src":"3613:319:44","text":"@notice Transfers tokens using a signed permit messages\n @param permit The permit data signed over by the owner\n @param dataHash The EIP-712 hash of permit data to include when checking signature\n @param owner The owner of the tokens to transfer\n @param signature The signature to verify"},"id":6303,"implemented":true,"kind":"function","modifiers":[],"name":"_permitTransferFrom","nameLocation":"3946:19:44","nodeType":"FunctionDefinition","parameters":{"id":6204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6193,"mutability":"mutable","name":"permit","nameLocation":"4006:6:44","nodeType":"VariableDeclaration","scope":6303,"src":"3975:37:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":6192,"nodeType":"UserDefinedTypeName","pathNode":{"id":6191,"name":"PermitBatchTransferFrom","nameLocations":["3975:23:44"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"3975:23:44"},"referencedDeclaration":6660,"src":"3975:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6197,"mutability":"mutable","name":"transferDetails","nameLocation":"4058:15:44","nodeType":"VariableDeclaration","scope":6303,"src":"4022:51:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"},"typeName":{"baseType":{"id":6195,"nodeType":"UserDefinedTypeName","pathNode":{"id":6194,"name":"SignatureTransferDetails","nameLocations":["4022:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"4022:24:44"},"referencedDeclaration":6651,"src":"4022:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"id":6196,"nodeType":"ArrayTypeName","src":"4022:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":6199,"mutability":"mutable","name":"owner","nameLocation":"4091:5:44","nodeType":"VariableDeclaration","scope":6303,"src":"4083:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6198,"name":"address","nodeType":"ElementaryTypeName","src":"4083:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6201,"mutability":"mutable","name":"dataHash","nameLocation":"4114:8:44","nodeType":"VariableDeclaration","scope":6303,"src":"4106:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6200,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4106:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6203,"mutability":"mutable","name":"signature","nameLocation":"4147:9:44","nodeType":"VariableDeclaration","scope":6303,"src":"4132:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6202,"name":"bytes","nodeType":"ElementaryTypeName","src":"4132:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3965:197:44"},"returnParameters":{"id":6205,"nodeType":"ParameterList","parameters":[],"src":"4171:0:44"},"scope":6398,"src":"3937:1194:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[6744],"body":{"id":6327,"nodeType":"Block","src":"5251:126:44","statements":[{"expression":{"id":6318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6311,"name":"nonceBitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6003,"src":"5261:11:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":6315,"indexExpression":{"expression":{"id":6312,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5273:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5277:6:44","memberName":"sender","nodeType":"MemberAccess","src":"5273:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5261:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":6316,"indexExpression":{"id":6314,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6306,"src":"5285:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5261:32:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"id":6317,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6308,"src":"5297:4:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5261:40:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6319,"nodeType":"ExpressionStatement","src":"5261:40:44"},{"eventCall":{"arguments":[{"expression":{"id":6321,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5344:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5348:6:44","memberName":"sender","nodeType":"MemberAccess","src":"5344:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6323,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6306,"src":"5356:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6324,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6308,"src":"5365:4:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6320,"name":"UnorderedNonceInvalidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6633,"src":"5317:26:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":6325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5317:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6326,"nodeType":"EmitStatement","src":"5312:58:44"}]},"documentation":{"id":6304,"nodeType":"StructuredDocumentation","src":"5137:34:44","text":"@inheritdoc ISignatureTransfer"},"functionSelector":"3ff9dcb1","id":6328,"implemented":true,"kind":"function","modifiers":[],"name":"invalidateUnorderedNonces","nameLocation":"5185:25:44","nodeType":"FunctionDefinition","parameters":{"id":6309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6306,"mutability":"mutable","name":"wordPos","nameLocation":"5219:7:44","nodeType":"VariableDeclaration","scope":6328,"src":"5211:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6305,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6308,"mutability":"mutable","name":"mask","nameLocation":"5236:4:44","nodeType":"VariableDeclaration","scope":6328,"src":"5228:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6307,"name":"uint256","nodeType":"ElementaryTypeName","src":"5228:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:31:44"},"returnParameters":{"id":6310,"nodeType":"ParameterList","parameters":[],"src":"5251:0:44"},"scope":6398,"src":"5176:201:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6354,"nodeType":"Block","src":"5955:77:44","statements":[{"expression":{"id":6345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6338,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"5965:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6341,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6331,"src":"5983:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":6342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5992:1:44","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"5983:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5975:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":6339,"name":"uint248","nodeType":"ElementaryTypeName","src":"5975:7:44","typeDescriptions":{}}},"id":6344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5975:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"5965:29:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6346,"nodeType":"ExpressionStatement","src":"5965:29:44"},{"expression":{"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6347,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"6004:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6350,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6331,"src":"6019:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6013:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6348,"name":"uint8","nodeType":"ElementaryTypeName","src":"6013:5:44","typeDescriptions":{}}},"id":6351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6013:12:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6004:21:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6353,"nodeType":"ExpressionStatement","src":"6004:21:44"}]},"documentation":{"id":6329,"nodeType":"StructuredDocumentation","src":"5383:472:44","text":"@notice Returns the index of the bitmap and the bit position within the bitmap. Used for unordered nonces\n @param nonce The nonce to get the associated word and bit positions\n @return wordPos The word position or index into the nonceBitmap\n @return bitPos The bit position\n @dev The first 248 bits of the nonce value is the index of the desired bitmap\n @dev The last 8 bits of the nonce value is the position of the bit in the bitmap"},"id":6355,"implemented":true,"kind":"function","modifiers":[],"name":"bitmapPositions","nameLocation":"5869:15:44","nodeType":"FunctionDefinition","parameters":{"id":6332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6331,"mutability":"mutable","name":"nonce","nameLocation":"5893:5:44","nodeType":"VariableDeclaration","scope":6355,"src":"5885:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6330,"name":"uint256","nodeType":"ElementaryTypeName","src":"5885:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5884:15:44"},"returnParameters":{"id":6337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6334,"mutability":"mutable","name":"wordPos","nameLocation":"5930:7:44","nodeType":"VariableDeclaration","scope":6355,"src":"5922:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6333,"name":"uint256","nodeType":"ElementaryTypeName","src":"5922:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6336,"mutability":"mutable","name":"bitPos","nameLocation":"5947:6:44","nodeType":"VariableDeclaration","scope":6355,"src":"5939:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6335,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5921:33:44"},"scope":6398,"src":"5860:172:44","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6396,"nodeType":"Block","src":"6316:227:44","statements":[{"assignments":[6364,6366],"declarations":[{"constant":false,"id":6364,"mutability":"mutable","name":"wordPos","nameLocation":"6335:7:44","nodeType":"VariableDeclaration","scope":6396,"src":"6327:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6363,"name":"uint256","nodeType":"ElementaryTypeName","src":"6327:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6366,"mutability":"mutable","name":"bitPos","nameLocation":"6352:6:44","nodeType":"VariableDeclaration","scope":6396,"src":"6344:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6365,"name":"uint256","nodeType":"ElementaryTypeName","src":"6344:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6370,"initialValue":{"arguments":[{"id":6368,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6360,"src":"6378:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6367,"name":"bitmapPositions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6355,"src":"6362:15:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) pure returns (uint256,uint256)"}},"id":6369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6362:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6326:58:44"},{"assignments":[6372],"declarations":[{"constant":false,"id":6372,"mutability":"mutable","name":"bit","nameLocation":"6402:3:44","nodeType":"VariableDeclaration","scope":6396,"src":"6394:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6371,"name":"uint256","nodeType":"ElementaryTypeName","src":"6394:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6376,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6408:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6374,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6366,"src":"6413:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6408:11:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6394:25:44"},{"assignments":[6378],"declarations":[{"constant":false,"id":6378,"mutability":"mutable","name":"flipped","nameLocation":"6437:7:44","nodeType":"VariableDeclaration","scope":6396,"src":"6429:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6377,"name":"uint256","nodeType":"ElementaryTypeName","src":"6429:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6386,"initialValue":{"id":6385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6379,"name":"nonceBitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6003,"src":"6447:11:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":6381,"indexExpression":{"id":6380,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6358,"src":"6459:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6447:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":6383,"indexExpression":{"id":6382,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"6465:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6447:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"id":6384,"name":"bit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6372,"src":"6477:3:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6447:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6429:51:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6387,"name":"flipped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6378,"src":"6495:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6388,"name":"bit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6372,"src":"6505:3:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6495:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6512:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6495:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6395,"nodeType":"IfStatement","src":"6491:45:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6392,"name":"InvalidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"6522:12:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":6393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6522:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6394,"nodeType":"RevertStatement","src":"6515:21:44"}}]},"documentation":{"id":6356,"nodeType":"StructuredDocumentation","src":"6038:207:44","text":"@notice Checks whether a nonce is taken and sets the bit at the bit position in the bitmap at the word position\n @param from The address to use the nonce at\n @param nonce The nonce to spend"},"id":6397,"implemented":true,"kind":"function","modifiers":[],"name":"_useUnorderedNonce","nameLocation":"6259:18:44","nodeType":"FunctionDefinition","parameters":{"id":6361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6358,"mutability":"mutable","name":"from","nameLocation":"6286:4:44","nodeType":"VariableDeclaration","scope":6397,"src":"6278:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6357,"name":"address","nodeType":"ElementaryTypeName","src":"6278:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6360,"mutability":"mutable","name":"nonce","nameLocation":"6300:5:44","nodeType":"VariableDeclaration","scope":6397,"src":"6292:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6359,"name":"uint256","nodeType":"ElementaryTypeName","src":"6292:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6277:29:44"},"returnParameters":{"id":6362,"nodeType":"ParameterList","parameters":[],"src":"6316:0:44"},"scope":6398,"src":"6250:293:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6399,"src":"489:6056:44","usedErrors":[5957,5960,6621,6624,7302,7305,7308,7311]}],"src":"32:6514:44"},"id":44},"permit2/src/interfaces/IAllowanceTransfer.sol":{"ast":{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","exportedSymbols":{"IAllowanceTransfer":[6600]},"id":6601,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6400,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:45"},{"abstract":false,"baseContracts":[],"canonicalName":"IAllowanceTransfer","contractDependencies":[],"contractKind":"interface","documentation":{"id":6401,"nodeType":"StructuredDocumentation","src":"58:233:45","text":"@title AllowanceTransfer\n @notice Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts\n @dev Requires user's token approval on the Permit2 contract"},"fullyImplemented":false,"id":6600,"linearizedBaseContracts":[6600],"name":"IAllowanceTransfer","nameLocation":"301:18:45","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6402,"nodeType":"StructuredDocumentation","src":"326:145:45","text":"@notice Thrown when an allowance on a token has expired.\n @param deadline The timestamp at which the allowed amount is no longer valid"},"errorSelector":"d81b2f2e","id":6406,"name":"AllowanceExpired","nameLocation":"482:16:45","nodeType":"ErrorDefinition","parameters":{"id":6405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"deadline","nameLocation":"507:8:45","nodeType":"VariableDeclaration","scope":6406,"src":"499:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6403,"name":"uint256","nodeType":"ElementaryTypeName","src":"499:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"498:18:45"},"src":"476:41:45"},{"documentation":{"id":6407,"nodeType":"StructuredDocumentation","src":"523:115:45","text":"@notice Thrown when an allowance on a token has been depleted.\n @param amount The maximum amount allowed"},"errorSelector":"f96fb071","id":6411,"name":"InsufficientAllowance","nameLocation":"649:21:45","nodeType":"ErrorDefinition","parameters":{"id":6410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6409,"mutability":"mutable","name":"amount","nameLocation":"679:6:45","nodeType":"VariableDeclaration","scope":6411,"src":"671:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6408,"name":"uint256","nodeType":"ElementaryTypeName","src":"671:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"670:16:45"},"src":"643:44:45"},{"documentation":{"id":6412,"nodeType":"StructuredDocumentation","src":"693:56:45","text":"@notice Thrown when too many nonces are invalidated."},"errorSelector":"24d35a26","id":6414,"name":"ExcessiveInvalidation","nameLocation":"760:21:45","nodeType":"ErrorDefinition","parameters":{"id":6413,"nodeType":"ParameterList","parameters":[],"src":"781:2:45"},"src":"754:30:45"},{"anonymous":false,"documentation":{"id":6415,"nodeType":"StructuredDocumentation","src":"790:84:45","text":"@notice Emits an event when the owner successfully invalidates an ordered nonce."},"eventSelector":"55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f3","id":6427,"name":"NonceInvalidation","nameLocation":"885:17:45","nodeType":"EventDefinition","parameters":{"id":6426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6417,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"928:5:45","nodeType":"VariableDeclaration","scope":6427,"src":"912:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6416,"name":"address","nodeType":"ElementaryTypeName","src":"912:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6419,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"951:5:45","nodeType":"VariableDeclaration","scope":6427,"src":"935:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6418,"name":"address","nodeType":"ElementaryTypeName","src":"935:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6421,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"974:7:45","nodeType":"VariableDeclaration","scope":6427,"src":"958:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6420,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6423,"indexed":false,"mutability":"mutable","name":"newNonce","nameLocation":"990:8:45","nodeType":"VariableDeclaration","scope":6427,"src":"983:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6422,"name":"uint48","nodeType":"ElementaryTypeName","src":"983:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6425,"indexed":false,"mutability":"mutable","name":"oldNonce","nameLocation":"1007:8:45","nodeType":"VariableDeclaration","scope":6427,"src":"1000:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6424,"name":"uint48","nodeType":"ElementaryTypeName","src":"1000:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"902:119:45"},"src":"879:143:45"},{"anonymous":false,"documentation":{"id":6428,"nodeType":"StructuredDocumentation","src":"1028:99:45","text":"@notice Emits an event when the owner successfully sets permissions on a token for the spender."},"eventSelector":"da9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b","id":6440,"name":"Approval","nameLocation":"1138:8:45","nodeType":"EventDefinition","parameters":{"id":6439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6430,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1172:5:45","nodeType":"VariableDeclaration","scope":6440,"src":"1156:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6429,"name":"address","nodeType":"ElementaryTypeName","src":"1156:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6432,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1195:5:45","nodeType":"VariableDeclaration","scope":6440,"src":"1179:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6431,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6434,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"1218:7:45","nodeType":"VariableDeclaration","scope":6440,"src":"1202:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6433,"name":"address","nodeType":"ElementaryTypeName","src":"1202:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6436,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1235:6:45","nodeType":"VariableDeclaration","scope":6440,"src":"1227:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6435,"name":"uint160","nodeType":"ElementaryTypeName","src":"1227:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6438,"indexed":false,"mutability":"mutable","name":"expiration","nameLocation":"1250:10:45","nodeType":"VariableDeclaration","scope":6440,"src":"1243:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6437,"name":"uint48","nodeType":"ElementaryTypeName","src":"1243:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1146:120:45"},"src":"1132:135:45"},{"anonymous":false,"documentation":{"id":6441,"nodeType":"StructuredDocumentation","src":"1273:124:45","text":"@notice Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender."},"eventSelector":"c6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec","id":6455,"name":"Permit","nameLocation":"1408:6:45","nodeType":"EventDefinition","parameters":{"id":6454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6443,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1440:5:45","nodeType":"VariableDeclaration","scope":6455,"src":"1424:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6442,"name":"address","nodeType":"ElementaryTypeName","src":"1424:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6445,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1471:5:45","nodeType":"VariableDeclaration","scope":6455,"src":"1455:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6444,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6447,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"1502:7:45","nodeType":"VariableDeclaration","scope":6455,"src":"1486:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6446,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6449,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1527:6:45","nodeType":"VariableDeclaration","scope":6455,"src":"1519:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6448,"name":"uint160","nodeType":"ElementaryTypeName","src":"1519:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6451,"indexed":false,"mutability":"mutable","name":"expiration","nameLocation":"1550:10:45","nodeType":"VariableDeclaration","scope":6455,"src":"1543:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6450,"name":"uint48","nodeType":"ElementaryTypeName","src":"1543:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6453,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"1577:5:45","nodeType":"VariableDeclaration","scope":6455,"src":"1570:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6452,"name":"uint48","nodeType":"ElementaryTypeName","src":"1570:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1414:174:45"},"src":"1402:187:45"},{"anonymous":false,"documentation":{"id":6456,"nodeType":"StructuredDocumentation","src":"1595:98:45","text":"@notice Emits an event when the owner sets the allowance back to 0 with the lockdown function."},"eventSelector":"89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4","id":6464,"name":"Lockdown","nameLocation":"1704:8:45","nodeType":"EventDefinition","parameters":{"id":6463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6458,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1729:5:45","nodeType":"VariableDeclaration","scope":6464,"src":"1713:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6457,"name":"address","nodeType":"ElementaryTypeName","src":"1713:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6460,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1744:5:45","nodeType":"VariableDeclaration","scope":6464,"src":"1736:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6459,"name":"address","nodeType":"ElementaryTypeName","src":"1736:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6462,"indexed":false,"mutability":"mutable","name":"spender","nameLocation":"1759:7:45","nodeType":"VariableDeclaration","scope":6464,"src":"1751:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6461,"name":"address","nodeType":"ElementaryTypeName","src":"1751:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1712:55:45"},"src":"1698:70:45"},{"canonicalName":"IAllowanceTransfer.PermitDetails","id":6473,"members":[{"constant":false,"id":6466,"mutability":"mutable","name":"token","nameLocation":"1888:5:45","nodeType":"VariableDeclaration","scope":6473,"src":"1880:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6465,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6468,"mutability":"mutable","name":"amount","nameLocation":"1958:6:45","nodeType":"VariableDeclaration","scope":6473,"src":"1950:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6467,"name":"uint160","nodeType":"ElementaryTypeName","src":"1950:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6470,"mutability":"mutable","name":"expiration","nameLocation":"2055:10:45","nodeType":"VariableDeclaration","scope":6473,"src":"2048:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6469,"name":"uint48","nodeType":"ElementaryTypeName","src":"2048:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6472,"mutability":"mutable","name":"nonce","nameLocation":"2170:5:45","nodeType":"VariableDeclaration","scope":6473,"src":"2163:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6471,"name":"uint48","nodeType":"ElementaryTypeName","src":"2163:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"PermitDetails","nameLocation":"1825:13:45","nodeType":"StructDefinition","scope":6600,"src":"1818:364:45","visibility":"public"},{"canonicalName":"IAllowanceTransfer.PermitSingle","id":6481,"members":[{"constant":false,"id":6476,"mutability":"mutable","name":"details","nameLocation":"2356:7:45","nodeType":"VariableDeclaration","scope":6481,"src":"2342:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"},"typeName":{"id":6475,"nodeType":"UserDefinedTypeName","pathNode":{"id":6474,"name":"PermitDetails","nameLocations":["2342:13:45"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"2342:13:45"},"referencedDeclaration":6473,"src":"2342:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"}},"visibility":"internal"},{"constant":false,"id":6478,"mutability":"mutable","name":"spender","nameLocation":"2435:7:45","nodeType":"VariableDeclaration","scope":6481,"src":"2427:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6477,"name":"address","nodeType":"ElementaryTypeName","src":"2427:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6480,"mutability":"mutable","name":"sigDeadline","nameLocation":"2504:11:45","nodeType":"VariableDeclaration","scope":6481,"src":"2496:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6479,"name":"uint256","nodeType":"ElementaryTypeName","src":"2496:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitSingle","nameLocation":"2265:12:45","nodeType":"StructDefinition","scope":6600,"src":"2258:264:45","visibility":"public"},{"canonicalName":"IAllowanceTransfer.PermitBatch","id":6490,"members":[{"constant":false,"id":6485,"mutability":"mutable","name":"details","nameLocation":"2702:7:45","nodeType":"VariableDeclaration","scope":6490,"src":"2686:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$6473_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails[]"},"typeName":{"baseType":{"id":6483,"nodeType":"UserDefinedTypeName","pathNode":{"id":6482,"name":"PermitDetails","nameLocations":["2686:13:45"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"2686:13:45"},"referencedDeclaration":6473,"src":"2686:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"}},"id":6484,"nodeType":"ArrayTypeName","src":"2686:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$6473_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails[]"}},"visibility":"internal"},{"constant":false,"id":6487,"mutability":"mutable","name":"spender","nameLocation":"2781:7:45","nodeType":"VariableDeclaration","scope":6490,"src":"2773:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6486,"name":"address","nodeType":"ElementaryTypeName","src":"2773:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6489,"mutability":"mutable","name":"sigDeadline","nameLocation":"2850:11:45","nodeType":"VariableDeclaration","scope":6490,"src":"2842:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6488,"name":"uint256","nodeType":"ElementaryTypeName","src":"2842:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitBatch","nameLocation":"2607:11:45","nodeType":"StructDefinition","scope":6600,"src":"2600:268:45","visibility":"public"},{"canonicalName":"IAllowanceTransfer.PackedAllowance","id":6497,"members":[{"constant":false,"id":6492,"mutability":"mutable","name":"amount","nameLocation":"3163:6:45","nodeType":"VariableDeclaration","scope":6497,"src":"3155:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6491,"name":"uint160","nodeType":"ElementaryTypeName","src":"3155:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6494,"mutability":"mutable","name":"expiration","nameLocation":"3215:10:45","nodeType":"VariableDeclaration","scope":6497,"src":"3208:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6493,"name":"uint48","nodeType":"ElementaryTypeName","src":"3208:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6496,"mutability":"mutable","name":"nonce","nameLocation":"3330:5:45","nodeType":"VariableDeclaration","scope":6497,"src":"3323:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6495,"name":"uint48","nodeType":"ElementaryTypeName","src":"3323:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"PackedAllowance","nameLocation":"3103:15:45","nodeType":"StructDefinition","scope":6600,"src":"3096:246:45","visibility":"public"},{"canonicalName":"IAllowanceTransfer.TokenSpenderPair","id":6502,"members":[{"constant":false,"id":6499,"mutability":"mutable","name":"token","nameLocation":"3473:5:45","nodeType":"VariableDeclaration","scope":6502,"src":"3465:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6498,"name":"address","nodeType":"ElementaryTypeName","src":"3465:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6501,"mutability":"mutable","name":"spender","nameLocation":"3527:7:45","nodeType":"VariableDeclaration","scope":6502,"src":"3519:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6500,"name":"address","nodeType":"ElementaryTypeName","src":"3519:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"TokenSpenderPair","nameLocation":"3393:16:45","nodeType":"StructDefinition","scope":6600,"src":"3386:155:45","visibility":"public"},{"canonicalName":"IAllowanceTransfer.AllowanceTransferDetails","id":6511,"members":[{"constant":false,"id":6504,"mutability":"mutable","name":"from","nameLocation":"3677:4:45","nodeType":"VariableDeclaration","scope":6511,"src":"3669:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6503,"name":"address","nodeType":"ElementaryTypeName","src":"3669:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6506,"mutability":"mutable","name":"to","nameLocation":"3737:2:45","nodeType":"VariableDeclaration","scope":6511,"src":"3729:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6505,"name":"address","nodeType":"ElementaryTypeName","src":"3729:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6508,"mutability":"mutable","name":"amount","nameLocation":"3792:6:45","nodeType":"VariableDeclaration","scope":6511,"src":"3784:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6507,"name":"uint160","nodeType":"ElementaryTypeName","src":"3784:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6510,"mutability":"mutable","name":"token","nameLocation":"3855:5:45","nodeType":"VariableDeclaration","scope":6511,"src":"3847:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6509,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AllowanceTransferDetails","nameLocation":"3600:24:45","nodeType":"StructDefinition","scope":6600,"src":"3593:274:45","visibility":"public"},{"documentation":{"id":6512,"nodeType":"StructuredDocumentation","src":"3873:455:45","text":"@notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals."},"functionSelector":"927da105","id":6527,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4342:9:45","nodeType":"FunctionDefinition","parameters":{"id":6519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6527,"src":"4352:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6513,"name":"address","nodeType":"ElementaryTypeName","src":"4352:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6527,"src":"4361:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6515,"name":"address","nodeType":"ElementaryTypeName","src":"4361:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6527,"src":"4370:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6517,"name":"address","nodeType":"ElementaryTypeName","src":"4370:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4351:27:45"},"returnParameters":{"id":6526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6521,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6527,"src":"4402:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6520,"name":"uint160","nodeType":"ElementaryTypeName","src":"4402:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6523,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6527,"src":"4411:6:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6522,"name":"uint48","nodeType":"ElementaryTypeName","src":"4411:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6527,"src":"4419:6:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6524,"name":"uint48","nodeType":"ElementaryTypeName","src":"4419:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4401:25:45"},"scope":6600,"src":"4333:94:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6528,"nodeType":"StructuredDocumentation","src":"4433:498:45","text":"@notice Approves the spender to use up to amount of the specified token up until the expiration\n @param token The token to approve\n @param spender The spender address to approve\n @param amount The approved amount of the token\n @param expiration The timestamp at which the approval is no longer valid\n @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n @dev Setting amount to type(uint160).max sets an unlimited approval"},"functionSelector":"87517c45","id":6539,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4945:7:45","nodeType":"FunctionDefinition","parameters":{"id":6537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6530,"mutability":"mutable","name":"token","nameLocation":"4961:5:45","nodeType":"VariableDeclaration","scope":6539,"src":"4953:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6529,"name":"address","nodeType":"ElementaryTypeName","src":"4953:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6532,"mutability":"mutable","name":"spender","nameLocation":"4976:7:45","nodeType":"VariableDeclaration","scope":6539,"src":"4968:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6531,"name":"address","nodeType":"ElementaryTypeName","src":"4968:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6534,"mutability":"mutable","name":"amount","nameLocation":"4993:6:45","nodeType":"VariableDeclaration","scope":6539,"src":"4985:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6533,"name":"uint160","nodeType":"ElementaryTypeName","src":"4985:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6536,"mutability":"mutable","name":"expiration","nameLocation":"5008:10:45","nodeType":"VariableDeclaration","scope":6539,"src":"5001:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6535,"name":"uint48","nodeType":"ElementaryTypeName","src":"5001:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4952:67:45"},"returnParameters":{"id":6538,"nodeType":"ParameterList","parameters":[],"src":"5028:0:45"},"scope":6600,"src":"4936:93:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6540,"nodeType":"StructuredDocumentation","src":"5035:407:45","text":"@notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitSingle Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data"},"functionSelector":"2b67b570","id":6550,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"5456:6:45","nodeType":"FunctionDefinition","parameters":{"id":6548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6542,"mutability":"mutable","name":"owner","nameLocation":"5471:5:45","nodeType":"VariableDeclaration","scope":6550,"src":"5463:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6541,"name":"address","nodeType":"ElementaryTypeName","src":"5463:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6545,"mutability":"mutable","name":"permitSingle","nameLocation":"5498:12:45","nodeType":"VariableDeclaration","scope":6550,"src":"5478:32:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"},"typeName":{"id":6544,"nodeType":"UserDefinedTypeName","pathNode":{"id":6543,"name":"PermitSingle","nameLocations":["5478:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":6481,"src":"5478:12:45"},"referencedDeclaration":6481,"src":"5478:12:45","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_storage_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"}},"visibility":"internal"},{"constant":false,"id":6547,"mutability":"mutable","name":"signature","nameLocation":"5527:9:45","nodeType":"VariableDeclaration","scope":6550,"src":"5512:24:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6546,"name":"bytes","nodeType":"ElementaryTypeName","src":"5512:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5462:75:45"},"returnParameters":{"id":6549,"nodeType":"ParameterList","parameters":[],"src":"5546:0:45"},"scope":6600,"src":"5447:100:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6551,"nodeType":"StructuredDocumentation","src":"5553:411:45","text":"@notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitBatch Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data"},"functionSelector":"2a2d80d1","id":6561,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"5978:6:45","nodeType":"FunctionDefinition","parameters":{"id":6559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6553,"mutability":"mutable","name":"owner","nameLocation":"5993:5:45","nodeType":"VariableDeclaration","scope":6561,"src":"5985:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6552,"name":"address","nodeType":"ElementaryTypeName","src":"5985:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6556,"mutability":"mutable","name":"permitBatch","nameLocation":"6019:11:45","nodeType":"VariableDeclaration","scope":6561,"src":"6000:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":6555,"nodeType":"UserDefinedTypeName","pathNode":{"id":6554,"name":"PermitBatch","nameLocations":["6000:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"6000:11:45"},"referencedDeclaration":6490,"src":"6000:11:45","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"},{"constant":false,"id":6558,"mutability":"mutable","name":"signature","nameLocation":"6047:9:45","nodeType":"VariableDeclaration","scope":6561,"src":"6032:24:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6557,"name":"bytes","nodeType":"ElementaryTypeName","src":"6032:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5984:73:45"},"returnParameters":{"id":6560,"nodeType":"ParameterList","parameters":[],"src":"6066:0:45"},"scope":6600,"src":"5969:98:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6562,"nodeType":"StructuredDocumentation","src":"6073:386:45","text":"@notice Transfer approved tokens from one address to another\n @param from The address to transfer from\n @param to The address of the recipient\n @param amount The amount of the token to transfer\n @param token The token address to transfer\n @dev Requires the from address to have approved at least the desired amount\n of tokens to msg.sender."},"functionSelector":"36c78516","id":6573,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6473:12:45","nodeType":"FunctionDefinition","parameters":{"id":6571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6564,"mutability":"mutable","name":"from","nameLocation":"6494:4:45","nodeType":"VariableDeclaration","scope":6573,"src":"6486:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6563,"name":"address","nodeType":"ElementaryTypeName","src":"6486:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6566,"mutability":"mutable","name":"to","nameLocation":"6508:2:45","nodeType":"VariableDeclaration","scope":6573,"src":"6500:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6565,"name":"address","nodeType":"ElementaryTypeName","src":"6500:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6568,"mutability":"mutable","name":"amount","nameLocation":"6520:6:45","nodeType":"VariableDeclaration","scope":6573,"src":"6512:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6567,"name":"uint160","nodeType":"ElementaryTypeName","src":"6512:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6570,"mutability":"mutable","name":"token","nameLocation":"6536:5:45","nodeType":"VariableDeclaration","scope":6573,"src":"6528:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6569,"name":"address","nodeType":"ElementaryTypeName","src":"6528:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6485:57:45"},"returnParameters":{"id":6572,"nodeType":"ParameterList","parameters":[],"src":"6551:0:45"},"scope":6600,"src":"6464:88:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6574,"nodeType":"StructuredDocumentation","src":"6558:264:45","text":"@notice Transfer approved tokens in a batch\n @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n @dev Requires the from addresses to have approved at least the desired amount\n of tokens to msg.sender."},"functionSelector":"0d58b1db","id":6581,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6836:12:45","nodeType":"FunctionDefinition","parameters":{"id":6579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6578,"mutability":"mutable","name":"transferDetails","nameLocation":"6885:15:45","nodeType":"VariableDeclaration","scope":6581,"src":"6849:51:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"},"typeName":{"baseType":{"id":6576,"nodeType":"UserDefinedTypeName","pathNode":{"id":6575,"name":"AllowanceTransferDetails","nameLocations":["6849:24:45"],"nodeType":"IdentifierPath","referencedDeclaration":6511,"src":"6849:24:45"},"referencedDeclaration":6511,"src":"6849:24:45","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$6511_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails"}},"id":6577,"nodeType":"ArrayTypeName","src":"6849:26:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$6511_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"}},"visibility":"internal"}],"src":"6848:53:45"},"returnParameters":{"id":6580,"nodeType":"ParameterList","parameters":[],"src":"6910:0:45"},"scope":6600,"src":"6827:84:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6582,"nodeType":"StructuredDocumentation","src":"6917:167:45","text":"@notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n by batch revoking approvals\n @param approvals Array of approvals to revoke."},"functionSelector":"cc53287f","id":6589,"implemented":false,"kind":"function","modifiers":[],"name":"lockdown","nameLocation":"7098:8:45","nodeType":"FunctionDefinition","parameters":{"id":6587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6586,"mutability":"mutable","name":"approvals","nameLocation":"7135:9:45","nodeType":"VariableDeclaration","scope":6589,"src":"7107:37:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$6502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair[]"},"typeName":{"baseType":{"id":6584,"nodeType":"UserDefinedTypeName","pathNode":{"id":6583,"name":"TokenSpenderPair","nameLocations":["7107:16:45"],"nodeType":"IdentifierPath","referencedDeclaration":6502,"src":"7107:16:45"},"referencedDeclaration":6502,"src":"7107:16:45","typeDescriptions":{"typeIdentifier":"t_struct$_TokenSpenderPair_$6502_storage_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair"}},"id":6585,"nodeType":"ArrayTypeName","src":"7107:18:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$6502_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair[]"}},"visibility":"internal"}],"src":"7106:39:45"},"returnParameters":{"id":6588,"nodeType":"ParameterList","parameters":[],"src":"7154:0:45"},"scope":6600,"src":"7089:66:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6590,"nodeType":"StructuredDocumentation","src":"7161:332:45","text":"@notice Invalidate nonces for a given (token, spender) pair\n @param token The token to invalidate nonces for\n @param spender The spender to invalidate nonces for\n @param newNonce The new nonce to set. Invalidates all nonces less than it.\n @dev Can't invalidate more than 2**16 nonces per transaction."},"functionSelector":"65d9723c","id":6599,"implemented":false,"kind":"function","modifiers":[],"name":"invalidateNonces","nameLocation":"7507:16:45","nodeType":"FunctionDefinition","parameters":{"id":6597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6592,"mutability":"mutable","name":"token","nameLocation":"7532:5:45","nodeType":"VariableDeclaration","scope":6599,"src":"7524:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6591,"name":"address","nodeType":"ElementaryTypeName","src":"7524:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6594,"mutability":"mutable","name":"spender","nameLocation":"7547:7:45","nodeType":"VariableDeclaration","scope":6599,"src":"7539:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6593,"name":"address","nodeType":"ElementaryTypeName","src":"7539:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6596,"mutability":"mutable","name":"newNonce","nameLocation":"7563:8:45","nodeType":"VariableDeclaration","scope":6599,"src":"7556:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6595,"name":"uint48","nodeType":"ElementaryTypeName","src":"7556:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7523:49:45"},"returnParameters":{"id":6598,"nodeType":"ParameterList","parameters":[],"src":"7581:0:45"},"scope":6600,"src":"7498:84:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6601,"src":"291:7293:45","usedErrors":[6406,6411,6414]}],"src":"32:7553:45"},"id":45},"permit2/src/interfaces/IERC1271.sol":{"ast":{"absolutePath":"permit2/src/interfaces/IERC1271.sol","exportedSymbols":{"IERC1271":[6613]},"id":6614,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6602,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:46"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":6613,"linearizedBaseContracts":[6613],"name":"IERC1271","nameLocation":"68:8:46","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6603,"nodeType":"StructuredDocumentation","src":"83:268:46","text":"@dev Should return whether the signature provided is valid for the provided data\n @param hash      Hash of the data to be signed\n @param signature Signature byte array associated with _data\n @return magicValue The bytes4 magic value 0x1626ba7e"},"functionSelector":"1626ba7e","id":6612,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"365:16:46","nodeType":"FunctionDefinition","parameters":{"id":6608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6605,"mutability":"mutable","name":"hash","nameLocation":"390:4:46","nodeType":"VariableDeclaration","scope":6612,"src":"382:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"382:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6607,"mutability":"mutable","name":"signature","nameLocation":"409:9:46","nodeType":"VariableDeclaration","scope":6612,"src":"396:22:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6606,"name":"bytes","nodeType":"ElementaryTypeName","src":"396:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"381:38:46"},"returnParameters":{"id":6611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6610,"mutability":"mutable","name":"magicValue","nameLocation":"450:10:46","nodeType":"VariableDeclaration","scope":6612,"src":"443:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6609,"name":"bytes4","nodeType":"ElementaryTypeName","src":"443:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"442:19:46"},"scope":6613,"src":"356:106:46","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6614,"src":"58:406:46","usedErrors":[]}],"src":"32:433:46"},"id":46},"permit2/src/interfaces/ISignatureTransfer.sol":{"ast":{"absolutePath":"permit2/src/interfaces/ISignatureTransfer.sol","exportedSymbols":{"ISignatureTransfer":[6745]},"id":6746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6615,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:47"},{"abstract":false,"baseContracts":[],"canonicalName":"ISignatureTransfer","contractDependencies":[],"contractKind":"interface","documentation":{"id":6616,"nodeType":"StructuredDocumentation","src":"58:167:47","text":"@title SignatureTransfer\n @notice Handles ERC20 token transfers through signature based actions\n @dev Requires user's token approval on the Permit2 contract"},"fullyImplemented":false,"id":6745,"linearizedBaseContracts":[6745],"name":"ISignatureTransfer","nameLocation":"235:18:47","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6617,"nodeType":"StructuredDocumentation","src":"260:176:47","text":"@notice Thrown when the requested amount for a transfer is larger than the permissioned amount\n @param maxAmount The maximum amount a spender can request to transfer"},"errorSelector":"3728b83d","id":6621,"name":"InvalidAmount","nameLocation":"447:13:47","nodeType":"ErrorDefinition","parameters":{"id":6620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6619,"mutability":"mutable","name":"maxAmount","nameLocation":"469:9:47","nodeType":"VariableDeclaration","scope":6621,"src":"461:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6618,"name":"uint256","nodeType":"ElementaryTypeName","src":"461:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"460:19:47"},"src":"441:39:47"},{"documentation":{"id":6622,"nodeType":"StructuredDocumentation","src":"486:261:47","text":"@notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\n @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred"},"errorSelector":"ff633a38","id":6624,"name":"LengthMismatch","nameLocation":"758:14:47","nodeType":"ErrorDefinition","parameters":{"id":6623,"nodeType":"ParameterList","parameters":[],"src":"772:2:47"},"src":"752:23:47"},{"anonymous":false,"documentation":{"id":6625,"nodeType":"StructuredDocumentation","src":"781:86:47","text":"@notice Emits an event when the owner successfully invalidates an unordered nonce."},"eventSelector":"3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d","id":6633,"name":"UnorderedNonceInvalidation","nameLocation":"878:26:47","nodeType":"EventDefinition","parameters":{"id":6632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6627,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"921:5:47","nodeType":"VariableDeclaration","scope":6633,"src":"905:21:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6626,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6629,"indexed":false,"mutability":"mutable","name":"word","nameLocation":"936:4:47","nodeType":"VariableDeclaration","scope":6633,"src":"928:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6628,"name":"uint256","nodeType":"ElementaryTypeName","src":"928:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6631,"indexed":false,"mutability":"mutable","name":"mask","nameLocation":"950:4:47","nodeType":"VariableDeclaration","scope":6633,"src":"942:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6630,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"904:51:47"},"src":"872:84:47"},{"canonicalName":"ISignatureTransfer.TokenPermissions","id":6638,"members":[{"constant":false,"id":6635,"mutability":"mutable","name":"token","nameLocation":"1135:5:47","nodeType":"VariableDeclaration","scope":6638,"src":"1127:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6634,"name":"address","nodeType":"ElementaryTypeName","src":"1127:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6637,"mutability":"mutable","name":"amount","nameLocation":"1206:6:47","nodeType":"VariableDeclaration","scope":6638,"src":"1198:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1198:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TokenPermissions","nameLocation":"1069:16:47","nodeType":"StructDefinition","scope":6745,"src":"1062:157:47","visibility":"public"},{"canonicalName":"ISignatureTransfer.PermitTransferFrom","id":6646,"members":[{"constant":false,"id":6641,"mutability":"mutable","name":"permitted","nameLocation":"1348:9:47","nodeType":"VariableDeclaration","scope":6646,"src":"1331:26:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"},"typeName":{"id":6640,"nodeType":"UserDefinedTypeName","pathNode":{"id":6639,"name":"TokenPermissions","nameLocations":["1331:16:47"],"nodeType":"IdentifierPath","referencedDeclaration":6638,"src":"1331:16:47"},"referencedDeclaration":6638,"src":"1331:16:47","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"}},"visibility":"internal"},{"constant":false,"id":6643,"mutability":"mutable","name":"nonce","nameLocation":"1464:5:47","nodeType":"VariableDeclaration","scope":6646,"src":"1456:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6642,"name":"uint256","nodeType":"ElementaryTypeName","src":"1456:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6645,"mutability":"mutable","name":"deadline","nameLocation":"1531:8:47","nodeType":"VariableDeclaration","scope":6646,"src":"1523:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6644,"name":"uint256","nodeType":"ElementaryTypeName","src":"1523:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitTransferFrom","nameLocation":"1302:18:47","nodeType":"StructDefinition","scope":6745,"src":"1295:251:47","visibility":"public"},{"canonicalName":"ISignatureTransfer.SignatureTransferDetails","id":6651,"members":[{"constant":false,"id":6648,"mutability":"mutable","name":"to","nameLocation":"1902:2:47","nodeType":"VariableDeclaration","scope":6651,"src":"1894:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6647,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6650,"mutability":"mutable","name":"requestedAmount","nameLocation":"1958:15:47","nodeType":"VariableDeclaration","scope":6651,"src":"1950:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6649,"name":"uint256","nodeType":"ElementaryTypeName","src":"1950:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SignatureTransferDetails","nameLocation":"1830:24:47","nodeType":"StructDefinition","scope":6745,"src":"1823:157:47","visibility":"public"},{"canonicalName":"ISignatureTransfer.PermitBatchTransferFrom","id":6660,"members":[{"constant":false,"id":6655,"mutability":"mutable","name":"permitted","nameLocation":"2367:9:47","nodeType":"VariableDeclaration","scope":6660,"src":"2348:28:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions[]"},"typeName":{"baseType":{"id":6653,"nodeType":"UserDefinedTypeName","pathNode":{"id":6652,"name":"TokenPermissions","nameLocations":["2348:16:47"],"nodeType":"IdentifierPath","referencedDeclaration":6638,"src":"2348:16:47"},"referencedDeclaration":6638,"src":"2348:16:47","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"}},"id":6654,"nodeType":"ArrayTypeName","src":"2348:18:47","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions[]"}},"visibility":"internal"},{"constant":false,"id":6657,"mutability":"mutable","name":"nonce","nameLocation":"2483:5:47","nodeType":"VariableDeclaration","scope":6660,"src":"2475:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6656,"name":"uint256","nodeType":"ElementaryTypeName","src":"2475:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6659,"mutability":"mutable","name":"deadline","nameLocation":"2550:8:47","nodeType":"VariableDeclaration","scope":6660,"src":"2542:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2542:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitBatchTransferFrom","nameLocation":"2241:23:47","nodeType":"StructDefinition","scope":6745,"src":"2234:331:47","visibility":"public"},{"documentation":{"id":6661,"nodeType":"StructuredDocumentation","src":"2571:483:47","text":"@notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\n @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order\n @dev The mapping is indexed first by the token owner, then by an index specified in the nonce\n @dev It returns a uint256 bitmap\n @dev The index, or wordPosition is capped at type(uint248).max"},"functionSelector":"4fe02b44","id":6670,"implemented":false,"kind":"function","modifiers":[],"name":"nonceBitmap","nameLocation":"3068:11:47","nodeType":"FunctionDefinition","parameters":{"id":6666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6670,"src":"3080:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6662,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6670,"src":"3089:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6664,"name":"uint256","nodeType":"ElementaryTypeName","src":"3089:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3079:18:47"},"returnParameters":{"id":6669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6670,"src":"3121:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6667,"name":"uint256","nodeType":"ElementaryTypeName","src":"3121:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3120:9:47"},"scope":6745,"src":"3059:71:47","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6671,"nodeType":"StructuredDocumentation","src":"3136:413:47","text":"@notice Transfers a token using a signed permit message\n @dev Reverts if the requested amount is greater than the permitted signed amount\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails The spender's requested transfer details for the permitted token\n @param signature The signature to verify"},"functionSelector":"30f28b7a","id":6684,"implemented":false,"kind":"function","modifiers":[],"name":"permitTransferFrom","nameLocation":"3563:18:47","nodeType":"FunctionDefinition","parameters":{"id":6682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6674,"mutability":"mutable","name":"permit","nameLocation":"3617:6:47","nodeType":"VariableDeclaration","scope":6684,"src":"3591:32:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":6673,"nodeType":"UserDefinedTypeName","pathNode":{"id":6672,"name":"PermitTransferFrom","nameLocations":["3591:18:47"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"3591:18:47"},"referencedDeclaration":6646,"src":"3591:18:47","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6677,"mutability":"mutable","name":"transferDetails","nameLocation":"3667:15:47","nodeType":"VariableDeclaration","scope":6684,"src":"3633:49:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"},"typeName":{"id":6676,"nodeType":"UserDefinedTypeName","pathNode":{"id":6675,"name":"SignatureTransferDetails","nameLocations":["3633:24:47"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"3633:24:47"},"referencedDeclaration":6651,"src":"3633:24:47","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"visibility":"internal"},{"constant":false,"id":6679,"mutability":"mutable","name":"owner","nameLocation":"3700:5:47","nodeType":"VariableDeclaration","scope":6684,"src":"3692:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6678,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6681,"mutability":"mutable","name":"signature","nameLocation":"3730:9:47","nodeType":"VariableDeclaration","scope":6684,"src":"3715:24:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6680,"name":"bytes","nodeType":"ElementaryTypeName","src":"3715:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3581:164:47"},"returnParameters":{"id":6683,"nodeType":"ParameterList","parameters":[],"src":"3754:0:47"},"scope":6745,"src":"3554:201:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6685,"nodeType":"StructuredDocumentation","src":"3761:815:47","text":"@notice Transfers a token using a signed permit message\n @notice Includes extra data provided by the caller to verify signature over\n @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n @dev Reverts if the requested amount is greater than the permitted signed amount\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails The spender's requested transfer details for the permitted token\n @param witness Extra data to include when checking the user signature\n @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n @param signature The signature to verify"},"functionSelector":"137c29fe","id":6702,"implemented":false,"kind":"function","modifiers":[],"name":"permitWitnessTransferFrom","nameLocation":"4590:25:47","nodeType":"FunctionDefinition","parameters":{"id":6700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6688,"mutability":"mutable","name":"permit","nameLocation":"4651:6:47","nodeType":"VariableDeclaration","scope":6702,"src":"4625:32:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":6687,"nodeType":"UserDefinedTypeName","pathNode":{"id":6686,"name":"PermitTransferFrom","nameLocations":["4625:18:47"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"4625:18:47"},"referencedDeclaration":6646,"src":"4625:18:47","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6691,"mutability":"mutable","name":"transferDetails","nameLocation":"4701:15:47","nodeType":"VariableDeclaration","scope":6702,"src":"4667:49:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"},"typeName":{"id":6690,"nodeType":"UserDefinedTypeName","pathNode":{"id":6689,"name":"SignatureTransferDetails","nameLocations":["4667:24:47"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"4667:24:47"},"referencedDeclaration":6651,"src":"4667:24:47","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"visibility":"internal"},{"constant":false,"id":6693,"mutability":"mutable","name":"owner","nameLocation":"4734:5:47","nodeType":"VariableDeclaration","scope":6702,"src":"4726:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6692,"name":"address","nodeType":"ElementaryTypeName","src":"4726:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6695,"mutability":"mutable","name":"witness","nameLocation":"4757:7:47","nodeType":"VariableDeclaration","scope":6702,"src":"4749:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4749:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6697,"mutability":"mutable","name":"witnessTypeString","nameLocation":"4790:17:47","nodeType":"VariableDeclaration","scope":6702,"src":"4774:33:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6696,"name":"string","nodeType":"ElementaryTypeName","src":"4774:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6699,"mutability":"mutable","name":"signature","nameLocation":"4832:9:47","nodeType":"VariableDeclaration","scope":6702,"src":"4817:24:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6698,"name":"bytes","nodeType":"ElementaryTypeName","src":"4817:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4615:232:47"},"returnParameters":{"id":6701,"nodeType":"ParameterList","parameters":[],"src":"4856:0:47"},"scope":6745,"src":"4581:276:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6703,"nodeType":"StructuredDocumentation","src":"4863:335:47","text":"@notice Transfers multiple tokens using a signed permit message\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails Specifies the recipient and requested amount for the token transfer\n @param signature The signature to verify"},"functionSelector":"edd9444b","id":6717,"implemented":false,"kind":"function","modifiers":[],"name":"permitTransferFrom","nameLocation":"5212:18:47","nodeType":"FunctionDefinition","parameters":{"id":6715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6706,"mutability":"mutable","name":"permit","nameLocation":"5271:6:47","nodeType":"VariableDeclaration","scope":6717,"src":"5240:37:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":6705,"nodeType":"UserDefinedTypeName","pathNode":{"id":6704,"name":"PermitBatchTransferFrom","nameLocations":["5240:23:47"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"5240:23:47"},"referencedDeclaration":6660,"src":"5240:23:47","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6710,"mutability":"mutable","name":"transferDetails","nameLocation":"5323:15:47","nodeType":"VariableDeclaration","scope":6717,"src":"5287:51:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"},"typeName":{"baseType":{"id":6708,"nodeType":"UserDefinedTypeName","pathNode":{"id":6707,"name":"SignatureTransferDetails","nameLocations":["5287:24:47"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"5287:24:47"},"referencedDeclaration":6651,"src":"5287:24:47","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"id":6709,"nodeType":"ArrayTypeName","src":"5287:26:47","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":6712,"mutability":"mutable","name":"owner","nameLocation":"5356:5:47","nodeType":"VariableDeclaration","scope":6717,"src":"5348:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6711,"name":"address","nodeType":"ElementaryTypeName","src":"5348:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6714,"mutability":"mutable","name":"signature","nameLocation":"5386:9:47","nodeType":"VariableDeclaration","scope":6717,"src":"5371:24:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6713,"name":"bytes","nodeType":"ElementaryTypeName","src":"5371:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5230:171:47"},"returnParameters":{"id":6716,"nodeType":"ParameterList","parameters":[],"src":"5410:0:47"},"scope":6745,"src":"5203:208:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6718,"nodeType":"StructuredDocumentation","src":"5417:737:47","text":"@notice Transfers multiple tokens using a signed permit message\n @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n @notice Includes extra data provided by the caller to verify signature over\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails Specifies the recipient and requested amount for the token transfer\n @param witness Extra data to include when checking the user signature\n @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n @param signature The signature to verify"},"functionSelector":"fe8ec1a7","id":6736,"implemented":false,"kind":"function","modifiers":[],"name":"permitWitnessTransferFrom","nameLocation":"6168:25:47","nodeType":"FunctionDefinition","parameters":{"id":6734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6721,"mutability":"mutable","name":"permit","nameLocation":"6234:6:47","nodeType":"VariableDeclaration","scope":6736,"src":"6203:37:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":6720,"nodeType":"UserDefinedTypeName","pathNode":{"id":6719,"name":"PermitBatchTransferFrom","nameLocations":["6203:23:47"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"6203:23:47"},"referencedDeclaration":6660,"src":"6203:23:47","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":6725,"mutability":"mutable","name":"transferDetails","nameLocation":"6286:15:47","nodeType":"VariableDeclaration","scope":6736,"src":"6250:51:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"},"typeName":{"baseType":{"id":6723,"nodeType":"UserDefinedTypeName","pathNode":{"id":6722,"name":"SignatureTransferDetails","nameLocations":["6250:24:47"],"nodeType":"IdentifierPath","referencedDeclaration":6651,"src":"6250:24:47"},"referencedDeclaration":6651,"src":"6250:24:47","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$6651_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"id":6724,"nodeType":"ArrayTypeName","src":"6250:26:47","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$6651_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":6727,"mutability":"mutable","name":"owner","nameLocation":"6319:5:47","nodeType":"VariableDeclaration","scope":6736,"src":"6311:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6726,"name":"address","nodeType":"ElementaryTypeName","src":"6311:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6729,"mutability":"mutable","name":"witness","nameLocation":"6342:7:47","nodeType":"VariableDeclaration","scope":6736,"src":"6334:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6334:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6731,"mutability":"mutable","name":"witnessTypeString","nameLocation":"6375:17:47","nodeType":"VariableDeclaration","scope":6736,"src":"6359:33:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6730,"name":"string","nodeType":"ElementaryTypeName","src":"6359:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6733,"mutability":"mutable","name":"signature","nameLocation":"6417:9:47","nodeType":"VariableDeclaration","scope":6736,"src":"6402:24:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6732,"name":"bytes","nodeType":"ElementaryTypeName","src":"6402:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6193:239:47"},"returnParameters":{"id":6735,"nodeType":"ParameterList","parameters":[],"src":"6441:0:47"},"scope":6745,"src":"6159:283:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6737,"nodeType":"StructuredDocumentation","src":"6448:294:47","text":"@notice Invalidates the bits specified in mask for the bitmap at the word position\n @dev The wordPos is maxed at type(uint248).max\n @param wordPos A number to index the nonceBitmap at\n @param mask A bitmap masked against msg.sender's current bitmap at the word position"},"functionSelector":"3ff9dcb1","id":6744,"implemented":false,"kind":"function","modifiers":[],"name":"invalidateUnorderedNonces","nameLocation":"6756:25:47","nodeType":"FunctionDefinition","parameters":{"id":6742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6739,"mutability":"mutable","name":"wordPos","nameLocation":"6790:7:47","nodeType":"VariableDeclaration","scope":6744,"src":"6782:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6738,"name":"uint256","nodeType":"ElementaryTypeName","src":"6782:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6741,"mutability":"mutable","name":"mask","nameLocation":"6807:4:47","nodeType":"VariableDeclaration","scope":6744,"src":"6799:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6740,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6781:31:47"},"returnParameters":{"id":6743,"nodeType":"ParameterList","parameters":[],"src":"6821:0:47"},"scope":6745,"src":"6747:75:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6746,"src":"225:6599:47","usedErrors":[6621,6624]}],"src":"32:6793:47"},"id":47},"permit2/src/libraries/Allowance.sol":{"ast":{"absolutePath":"permit2/src/libraries/Allowance.sol","exportedSymbols":{"Allowance":[6864],"IAllowanceTransfer":[6600]},"id":6865,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6747,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:48"},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"../interfaces/IAllowanceTransfer.sol","id":6749,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6865,"sourceUnit":6601,"src":"58:72:48","symbolAliases":[{"foreign":{"id":6748,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"66:18:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Allowance","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":6864,"linearizedBaseContracts":[6864],"name":"Allowance","nameLocation":"140:9:48","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6752,"mutability":"constant","name":"BLOCK_TIMESTAMP_EXPIRATION","nameLocation":"272:26:48","nodeType":"VariableDeclaration","scope":6864,"src":"247:55:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6750,"name":"uint256","nodeType":"ElementaryTypeName","src":"247:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":6751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"301:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"body":{"id":6797,"nodeType":"Block","src":"711:355:48","statements":[{"assignments":[6766],"declarations":[{"constant":false,"id":6766,"mutability":"mutable","name":"storedNonce","nameLocation":"728:11:48","nodeType":"VariableDeclaration","scope":6797,"src":"721:18:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6765,"name":"uint48","nodeType":"ElementaryTypeName","src":"721:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":6767,"nodeType":"VariableDeclarationStatement","src":"721:18:48"},{"id":6774,"nodeType":"UncheckedBlock","src":"749:58:48","statements":[{"expression":{"id":6772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6768,"name":"storedNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6766,"src":"773:11:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6769,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6762,"src":"787:5:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"795:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"787:9:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"773:23:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":6773,"nodeType":"ExpressionStatement","src":"773:23:48"}]},{"assignments":[6776],"declarations":[{"constant":false,"id":6776,"mutability":"mutable","name":"storedExpiration","nameLocation":"824:16:48","nodeType":"VariableDeclaration","scope":6797,"src":"817:23:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6775,"name":"uint48","nodeType":"ElementaryTypeName","src":"817:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":6787,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6777,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"843:10:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6778,"name":"BLOCK_TIMESTAMP_EXPIRATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6752,"src":"857:26:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"843:40:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":6785,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"912:10:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":6786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"843:79:48","trueExpression":{"arguments":[{"expression":{"id":6782,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"893:5:48","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"899:9:48","memberName":"timestamp","nodeType":"MemberAccess","src":"893:15:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"886:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":6780,"name":"uint48","nodeType":"ElementaryTypeName","src":"886:6:48","typeDescriptions":{}}},"id":6784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"886:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"817:105:48"},{"assignments":[6789],"declarations":[{"constant":false,"id":6789,"mutability":"mutable","name":"word","nameLocation":"941:4:48","nodeType":"VariableDeclaration","scope":6797,"src":"933:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6788,"name":"uint256","nodeType":"ElementaryTypeName","src":"933:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6795,"initialValue":{"arguments":[{"id":6791,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"953:6:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6792,"name":"storedExpiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"961:16:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":6793,"name":"storedNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6766,"src":"979:11:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":6790,"name":"pack","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6863,"src":"948:4:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint48_$_t_uint48_$returns$_t_uint256_$","typeString":"function (uint160,uint48,uint48) pure returns (uint256)"}},"id":6794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"948:43:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"933:58:48"},{"AST":{"nodeType":"YulBlock","src":"1010:50:48","statements":[{"expression":{"arguments":[{"name":"allowed.slot","nodeType":"YulIdentifier","src":"1031:12:48"},{"name":"word","nodeType":"YulIdentifier","src":"1045:4:48"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"1024:6:48"},"nodeType":"YulFunctionCall","src":"1024:26:48"},"nodeType":"YulExpressionStatement","src":"1024:26:48"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6756,"isOffset":false,"isSlot":true,"src":"1031:12:48","suffix":"slot","valueSize":1},{"declaration":6789,"isOffset":false,"isSlot":false,"src":"1045:4:48","valueSize":1}],"id":6796,"nodeType":"InlineAssembly","src":"1001:59:48"}]},"documentation":{"id":6753,"nodeType":"StructuredDocumentation","src":"309:230:48","text":"@notice Sets the allowed amount, expiry, and nonce of the spender's permissions on owner's token.\n @dev Nonce is incremented.\n @dev If the inputted expiration is 0, the stored expiration is set to block.timestamp"},"id":6798,"implemented":true,"kind":"function","modifiers":[],"name":"updateAll","nameLocation":"553:9:48","nodeType":"FunctionDefinition","parameters":{"id":6763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6756,"mutability":"mutable","name":"allowed","nameLocation":"615:7:48","nodeType":"VariableDeclaration","scope":6798,"src":"572:50:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"},"typeName":{"id":6755,"nodeType":"UserDefinedTypeName","pathNode":{"id":6754,"name":"IAllowanceTransfer.PackedAllowance","nameLocations":["572:18:48","591:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":6497,"src":"572:34:48"},"referencedDeclaration":6497,"src":"572:34:48","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"}},"visibility":"internal"},{"constant":false,"id":6758,"mutability":"mutable","name":"amount","nameLocation":"640:6:48","nodeType":"VariableDeclaration","scope":6798,"src":"632:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6757,"name":"uint160","nodeType":"ElementaryTypeName","src":"632:7:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6760,"mutability":"mutable","name":"expiration","nameLocation":"663:10:48","nodeType":"VariableDeclaration","scope":6798,"src":"656:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6759,"name":"uint48","nodeType":"ElementaryTypeName","src":"656:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6762,"mutability":"mutable","name":"nonce","nameLocation":"690:5:48","nodeType":"VariableDeclaration","scope":6798,"src":"683:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6761,"name":"uint48","nodeType":"ElementaryTypeName","src":"683:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"562:139:48"},"returnParameters":{"id":6764,"nodeType":"ParameterList","parameters":[],"src":"711:0:48"},"scope":6864,"src":"544:522:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6830,"nodeType":"Block","src":"1383:221:48","statements":[{"expression":{"id":6822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6809,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"1489:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":6811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1497:10:48","memberName":"expiration","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"1489:18:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6812,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"1510:10:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1524:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1510:15:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":6820,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"1554:10:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":6821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1510:54:48","trueExpression":{"arguments":[{"expression":{"id":6817,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1535:5:48","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1541:9:48","memberName":"timestamp","nodeType":"MemberAccess","src":"1535:15:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":6815,"name":"uint48","nodeType":"ElementaryTypeName","src":"1528:6:48","typeDescriptions":{}}},"id":6819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"1489:75:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":6823,"nodeType":"ExpressionStatement","src":"1489:75:48"},{"expression":{"id":6828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6824,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"1574:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance storage pointer"}},"id":6826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1582:6:48","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":6492,"src":"1574:14:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6827,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6804,"src":"1591:6:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1574:23:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6829,"nodeType":"ExpressionStatement","src":"1574:23:48"}]},"documentation":{"id":6799,"nodeType":"StructuredDocumentation","src":"1072:145:48","text":"@notice Sets the allowed amount and expiry of the spender's permissions on owner's token.\n @dev Nonce does not need to be incremented."},"id":6831,"implemented":true,"kind":"function","modifiers":[],"name":"updateAmountAndExpiration","nameLocation":"1231:25:48","nodeType":"FunctionDefinition","parameters":{"id":6807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6802,"mutability":"mutable","name":"allowed","nameLocation":"1309:7:48","nodeType":"VariableDeclaration","scope":6831,"src":"1266:50:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"},"typeName":{"id":6801,"nodeType":"UserDefinedTypeName","pathNode":{"id":6800,"name":"IAllowanceTransfer.PackedAllowance","nameLocations":["1266:18:48","1285:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":6497,"src":"1266:34:48"},"referencedDeclaration":6497,"src":"1266:34:48","typeDescriptions":{"typeIdentifier":"t_struct$_PackedAllowance_$6497_storage_ptr","typeString":"struct IAllowanceTransfer.PackedAllowance"}},"visibility":"internal"},{"constant":false,"id":6804,"mutability":"mutable","name":"amount","nameLocation":"1334:6:48","nodeType":"VariableDeclaration","scope":6831,"src":"1326:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6803,"name":"uint160","nodeType":"ElementaryTypeName","src":"1326:7:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6806,"mutability":"mutable","name":"expiration","nameLocation":"1357:10:48","nodeType":"VariableDeclaration","scope":6831,"src":"1350:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6805,"name":"uint48","nodeType":"ElementaryTypeName","src":"1350:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1256:117:48"},"returnParameters":{"id":6808,"nodeType":"ParameterList","parameters":[],"src":"1383:0:48"},"scope":6864,"src":"1222:382:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6862,"nodeType":"Block","src":"1817:85:48","statements":[{"expression":{"id":6860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6843,"name":"word","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6841,"src":"1827:4:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6846,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6838,"src":"1843:5:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":6845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1835:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6844,"name":"uint256","nodeType":"ElementaryTypeName","src":"1835:7:48","typeDescriptions":{}}},"id":6847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1835:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"323038","id":6848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1853:3:48","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},"src":"1835:21:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6850,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1834:23:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6853,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"1868:10:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":6852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1860:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6851,"name":"uint256","nodeType":"ElementaryTypeName","src":"1860:7:48","typeDescriptions":{}}},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1860:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313630","id":6855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1883:3:48","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},"src":"1860:26:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1834:52:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6858,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6834,"src":"1889:6:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1834:61:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1827:68:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6861,"nodeType":"ExpressionStatement","src":"1827:68:48"}]},"documentation":{"id":6832,"nodeType":"StructuredDocumentation","src":"1610:102:48","text":"@notice Computes the packed slot of the amount, expiration, and nonce that make up PackedAllowance"},"id":6863,"implemented":true,"kind":"function","modifiers":[],"name":"pack","nameLocation":"1726:4:48","nodeType":"FunctionDefinition","parameters":{"id":6839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6834,"mutability":"mutable","name":"amount","nameLocation":"1739:6:48","nodeType":"VariableDeclaration","scope":6863,"src":"1731:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6833,"name":"uint160","nodeType":"ElementaryTypeName","src":"1731:7:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6836,"mutability":"mutable","name":"expiration","nameLocation":"1754:10:48","nodeType":"VariableDeclaration","scope":6863,"src":"1747:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6835,"name":"uint48","nodeType":"ElementaryTypeName","src":"1747:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6838,"mutability":"mutable","name":"nonce","nameLocation":"1773:5:48","nodeType":"VariableDeclaration","scope":6863,"src":"1766:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6837,"name":"uint48","nodeType":"ElementaryTypeName","src":"1766:6:48","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1730:49:48"},"returnParameters":{"id":6842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6841,"mutability":"mutable","name":"word","nameLocation":"1811:4:48","nodeType":"VariableDeclaration","scope":6863,"src":"1803:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1803:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1802:14:48"},"scope":6864,"src":"1717:185:48","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6865,"src":"132:1772:48","usedErrors":[]}],"src":"32:1873:48"},"id":48},"permit2/src/libraries/PermitHash.sol":{"ast":{"absolutePath":"permit2/src/libraries/PermitHash.sol","exportedSymbols":{"IAllowanceTransfer":[6600],"ISignatureTransfer":[6745],"PermitHash":[7264]},"id":7265,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6866,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:49"},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"../interfaces/IAllowanceTransfer.sol","id":6868,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7265,"sourceUnit":6601,"src":"58:72:49","symbolAliases":[{"foreign":{"id":6867,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"66:18:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/ISignatureTransfer.sol","file":"../interfaces/ISignatureTransfer.sol","id":6870,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7265,"sourceUnit":6746,"src":"131:72:49","symbolAliases":[{"foreign":{"id":6869,"name":"ISignatureTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6745,"src":"139:18:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"PermitHash","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":7264,"linearizedBaseContracts":[7264],"name":"PermitHash","nameLocation":"213:10:49","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"6e4f2775","id":6875,"mutability":"constant","name":"_PERMIT_DETAILS_TYPEHASH","nameLocation":"254:24:49","nodeType":"VariableDeclaration","scope":7264,"src":"230:146:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"230:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d697444657461696c73286164647265737320746f6b656e2c75696e7431363020616d6f756e742c75696e7434382065787069726174696f6e2c75696e743438206e6f6e636529","id":6873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"299:76:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678","typeString":"literal_string \"PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\""},"value":"PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678","typeString":"literal_string \"PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\""}],"id":6872,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"289:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"289:87:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"c5df4f03","id":6880,"mutability":"constant","name":"_PERMIT_SINGLE_TYPEHASH","nameLocation":"407:23:49","nodeType":"VariableDeclaration","scope":7264,"src":"383:222:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"383:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d697453696e676c65285065726d697444657461696c732064657461696c732c61646472657373207370656e6465722c75696e7432353620736967446561646c696e65295065726d697444657461696c73286164647265737320746f6b656e2c75696e7431363020616d6f756e742c75696e7434382065787069726174696f6e2c75696e743438206e6f6e636529","id":6878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"452:147:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_f3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d0","typeString":"literal_string \"PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\""},"value":"PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d0","typeString":"literal_string \"PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\""}],"id":6877,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"433:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"433:172:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"6302c3cf","id":6885,"mutability":"constant","name":"_PERMIT_BATCH_TYPEHASH","nameLocation":"636:22:49","nodeType":"VariableDeclaration","scope":7264,"src":"612:222:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6881,"name":"bytes32","nodeType":"ElementaryTypeName","src":"612:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69744261746368285065726d697444657461696c735b5d2064657461696c732c61646472657373207370656e6465722c75696e7432353620736967446561646c696e65295065726d697444657461696c73286164647265737320746f6b656e2c75696e7431363020616d6f756e742c75696e7434382065787069726174696f6e2c75696e743438206e6f6e636529","id":6883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"680:148:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_af1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f79440863","typeString":"literal_string \"PermitBatch(PermitDetails[] details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\""},"value":"PermitBatch(PermitDetails[] details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_af1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f79440863","typeString":"literal_string \"PermitBatch(PermitDetails[] details,address spender,uint256 sigDeadline)PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)\""}],"id":6882,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"661:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"661:173:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"415e982d","id":6890,"mutability":"constant","name":"_TOKEN_PERMISSIONS_TYPEHASH","nameLocation":"865:27:49","nodeType":"VariableDeclaration","scope":7264,"src":"841:113:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6886,"name":"bytes32","nodeType":"ElementaryTypeName","src":"841:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429","id":6888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"905:48:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1","typeString":"literal_string \"TokenPermissions(address token,uint256 amount)\""},"value":"TokenPermissions(address token,uint256 amount)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1","typeString":"literal_string \"TokenPermissions(address token,uint256 amount)\""}],"id":6887,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"895:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"895:59:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"78f16830","id":6895,"mutability":"constant","name":"_PERMIT_TRANSFER_FROM_TYPEHASH","nameLocation":"985:30:49","nodeType":"VariableDeclaration","scope":7264,"src":"961:223:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6891,"name":"bytes32","nodeType":"ElementaryTypeName","src":"961:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69745472616e7366657246726f6d28546f6b656e5065726d697373696f6e73207065726d69747465642c61646472657373207370656e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429","id":6893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1037:141:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d80106","typeString":"literal_string \"PermitTransferFrom(TokenPermissions permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)\""},"value":"PermitTransferFrom(TokenPermissions permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d80106","typeString":"literal_string \"PermitTransferFrom(TokenPermissions permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)\""}],"id":6892,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1018:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1018:166:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"3eb8b8fd","id":6900,"mutability":"constant","name":"_PERMIT_BATCH_TRANSFER_FROM_TYPEHASH","nameLocation":"1215:36:49","nodeType":"VariableDeclaration","scope":7264,"src":"1191:236:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6896,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1191:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d697442617463685472616e7366657246726f6d28546f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472657373207370656e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429","id":6898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1273:148:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_fcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b766","typeString":"literal_string \"PermitBatchTransferFrom(TokenPermissions[] permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)\""},"value":"PermitBatchTransferFrom(TokenPermissions[] permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_fcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b766","typeString":"literal_string \"PermitBatchTransferFrom(TokenPermissions[] permitted,address spender,uint256 nonce,uint256 deadline)TokenPermissions(address token,uint256 amount)\""}],"id":6897,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1254:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:173:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"c0c7fa7e","id":6903,"mutability":"constant","name":"_TOKEN_PERMISSIONS_TYPESTRING","nameLocation":"1457:29:49","nodeType":"VariableDeclaration","scope":7264,"src":"1434:103:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6901,"name":"string","nodeType":"ElementaryTypeName","src":"1434:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429","id":6902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1489:48:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1","typeString":"literal_string \"TokenPermissions(address token,uint256 amount)\""},"value":"TokenPermissions(address token,uint256 amount)"},"visibility":"public"},{"constant":true,"functionSelector":"84b8efbb","id":6906,"mutability":"constant","name":"_PERMIT_TRANSFER_FROM_WITNESS_TYPEHASH_STUB","nameLocation":"1567:43:49","nodeType":"VariableDeclaration","scope":7264,"src":"1544:179:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6904,"name":"string","nodeType":"ElementaryTypeName","src":"1544:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5065726d697373696f6e73207065726d69747465642c61646472657373207370656e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c","id":6905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1621:102:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_7c29ab44842e91090848780f4cd9a6c05ba5b883d9f1f1ad134563b61518940b","typeString":"literal_string \"PermitWitnessTransferFrom(TokenPermissions permitted,address spender,uint256 nonce,uint256 deadline,\""},"value":"PermitWitnessTransferFrom(TokenPermissions permitted,address spender,uint256 nonce,uint256 deadline,"},"visibility":"public"},{"constant":true,"functionSelector":"90bbf2f3","id":6909,"mutability":"constant","name":"_PERMIT_BATCH_WITNESS_TRANSFER_FROM_TYPEHASH_STUB","nameLocation":"1753:49:49","nodeType":"VariableDeclaration","scope":7264,"src":"1730:192:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6907,"name":"string","nodeType":"ElementaryTypeName","src":"1730:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5065726d697442617463685769746e6573735472616e7366657246726f6d28546f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472657373207370656e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c","id":6908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1813:109:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_0bf214d267f8e8fa0f37d38e2103aff5c639b54388783bd59a418a8bee49520c","typeString":"literal_string \"PermitBatchWitnessTransferFrom(TokenPermissions[] permitted,address spender,uint256 nonce,uint256 deadline,\""},"value":"PermitBatchWitnessTransferFrom(TokenPermissions[] permitted,address spender,uint256 nonce,uint256 deadline,"},"visibility":"public"},{"body":{"id":6936,"nodeType":"Block","src":"2028:213:49","statements":[{"assignments":[6918],"declarations":[{"constant":false,"id":6918,"mutability":"mutable","name":"permitHash","nameLocation":"2046:10:49","nodeType":"VariableDeclaration","scope":6936,"src":"2038:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6917,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2038:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6923,"initialValue":{"arguments":[{"expression":{"id":6920,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"2078:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":6921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2091:7:49","memberName":"details","nodeType":"MemberAccess","referencedDeclaration":6476,"src":"2078:20:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}],"id":6919,"name":"_hashPermitDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"2059:18:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PermitDetails_$6473_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IAllowanceTransfer.PermitDetails memory) pure returns (bytes32)"}},"id":6922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2059:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2038:61:49"},{"expression":{"arguments":[{"arguments":[{"id":6927,"name":"_PERMIT_SINGLE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6880,"src":"2149:23:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6928,"name":"permitHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"2174:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":6929,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"2186:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":6930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2199:7:49","memberName":"spender","nodeType":"MemberAccess","referencedDeclaration":6478,"src":"2186:20:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6931,"name":"permitSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"2208:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle memory"}},"id":6932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2221:11:49","memberName":"sigDeadline","nodeType":"MemberAccess","referencedDeclaration":6480,"src":"2208:24:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6925,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2138:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2142:6:49","memberName":"encode","nodeType":"MemberAccess","src":"2138:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:95:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6924,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2128:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2128:106:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6916,"id":6935,"nodeType":"Return","src":"2109:125:49"}]},"id":6937,"implemented":true,"kind":"function","modifiers":[],"name":"hash","nameLocation":"1938:4:49","nodeType":"FunctionDefinition","parameters":{"id":6913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6912,"mutability":"mutable","name":"permitSingle","nameLocation":"1982:12:49","nodeType":"VariableDeclaration","scope":6937,"src":"1943:51:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"},"typeName":{"id":6911,"nodeType":"UserDefinedTypeName","pathNode":{"id":6910,"name":"IAllowanceTransfer.PermitSingle","nameLocations":["1943:18:49","1962:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":6481,"src":"1943:31:49"},"referencedDeclaration":6481,"src":"1943:31:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$6481_storage_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"}},"visibility":"internal"}],"src":"1942:53:49"},"returnParameters":{"id":6916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6915,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6937,"src":"2019:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2019:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2018:9:49"},"scope":7264,"src":"1929:312:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7002,"nodeType":"Block","src":"2344:517:49","statements":[{"assignments":[6946],"declarations":[{"constant":false,"id":6946,"mutability":"mutable","name":"numPermits","nameLocation":"2362:10:49","nodeType":"VariableDeclaration","scope":7002,"src":"2354:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6945,"name":"uint256","nodeType":"ElementaryTypeName","src":"2354:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6950,"initialValue":{"expression":{"expression":{"id":6947,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6940,"src":"2375:11:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":6948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2387:7:49","memberName":"details","nodeType":"MemberAccess","referencedDeclaration":6485,"src":"2375:19:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$6473_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory[] memory"}},"id":6949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2395:6:49","memberName":"length","nodeType":"MemberAccess","src":"2375:26:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2354:47:49"},{"assignments":[6955],"declarations":[{"constant":false,"id":6955,"mutability":"mutable","name":"permitHashes","nameLocation":"2428:12:49","nodeType":"VariableDeclaration","scope":7002,"src":"2411:29:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2411:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6954,"nodeType":"ArrayTypeName","src":"2411:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":6961,"initialValue":{"arguments":[{"id":6959,"name":"numPermits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6946,"src":"2457:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2443:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":6956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6957,"nodeType":"ArrayTypeName","src":"2447:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2443:25:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2411:57:49"},{"body":{"id":6983,"nodeType":"Block","src":"2519:85:49","statements":[{"expression":{"id":6981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6972,"name":"permitHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6955,"src":"2533:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":6974,"indexExpression":{"id":6973,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6963,"src":"2546:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2533:15:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":6976,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6940,"src":"2570:11:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":6977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2582:7:49","memberName":"details","nodeType":"MemberAccess","referencedDeclaration":6485,"src":"2570:19:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$6473_memory_ptr_$dyn_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory[] memory"}},"id":6979,"indexExpression":{"id":6978,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6963,"src":"2590:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2570:22:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}],"id":6975,"name":"_hashPermitDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"2551:18:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PermitDetails_$6473_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IAllowanceTransfer.PermitDetails memory) pure returns (bytes32)"}},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2551:42:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2533:60:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6982,"nodeType":"ExpressionStatement","src":"2533:60:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6966,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6963,"src":"2498:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6967,"name":"numPermits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6946,"src":"2502:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2498:14:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6984,"initializationExpression":{"assignments":[6963],"declarations":[{"constant":false,"id":6963,"mutability":"mutable","name":"i","nameLocation":"2491:1:49","nodeType":"VariableDeclaration","scope":6984,"src":"2483:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6962,"name":"uint256","nodeType":"ElementaryTypeName","src":"2483:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6965,"initialValue":{"hexValue":"30","id":6964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2483:13:49"},"loopExpression":{"expression":{"id":6970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2514:3:49","subExpression":{"id":6969,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6963,"src":"2516:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6971,"nodeType":"ExpressionStatement","src":"2514:3:49"},"nodeType":"ForStatement","src":"2478:126:49"},{"expression":{"arguments":[{"arguments":[{"id":6988,"name":"_PERMIT_BATCH_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6885,"src":"2671:22:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":6992,"name":"permitHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6955,"src":"2738:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"id":6990,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2721:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2725:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"2721:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:30:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6989,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2711:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2711:41:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":6995,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6940,"src":"2770:11:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":6996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2782:7:49","memberName":"spender","nodeType":"MemberAccess","referencedDeclaration":6487,"src":"2770:19:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6997,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6940,"src":"2807:11:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch memory"}},"id":6998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2819:11:49","memberName":"sigDeadline","nodeType":"MemberAccess","referencedDeclaration":6489,"src":"2807:23:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6986,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2643:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2647:6:49","memberName":"encode","nodeType":"MemberAccess","src":"2643:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2643:201:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6985,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2620:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2620:234:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6944,"id":7001,"nodeType":"Return","src":"2613:241:49"}]},"id":7003,"implemented":true,"kind":"function","modifiers":[],"name":"hash","nameLocation":"2256:4:49","nodeType":"FunctionDefinition","parameters":{"id":6941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6940,"mutability":"mutable","name":"permitBatch","nameLocation":"2299:11:49","nodeType":"VariableDeclaration","scope":7003,"src":"2261:49:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":6939,"nodeType":"UserDefinedTypeName","pathNode":{"id":6938,"name":"IAllowanceTransfer.PermitBatch","nameLocations":["2261:18:49","2280:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"2261:30:49"},"referencedDeclaration":6490,"src":"2261:30:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$6490_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"}],"src":"2260:51:49"},"returnParameters":{"id":6944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7003,"src":"2335:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2335:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2334:9:49"},"scope":7264,"src":"2247:614:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7032,"nodeType":"Block","src":"2966:244:49","statements":[{"assignments":[7012],"declarations":[{"constant":false,"id":7012,"mutability":"mutable","name":"tokenPermissionsHash","nameLocation":"2984:20:49","nodeType":"VariableDeclaration","scope":7032,"src":"2976:28:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7011,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2976:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7017,"initialValue":{"arguments":[{"expression":{"id":7014,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7006,"src":"3029:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":7015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3036:9:49","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"3029:16:49","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}],"id":7013,"name":"_hashTokenPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7263,"src":"3007:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_TokenPermissions_$6638_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct ISignatureTransfer.TokenPermissions memory) pure returns (bytes32)"}},"id":7016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3007:39:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2976:70:49"},{"expression":{"arguments":[{"arguments":[{"id":7021,"name":"_PERMIT_TRANSFER_FROM_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6895,"src":"3097:30:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7022,"name":"tokenPermissionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"3129:20:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7023,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3151:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3155:6:49","memberName":"sender","nodeType":"MemberAccess","src":"3151:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7025,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7006,"src":"3163:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":7026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3170:5:49","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6643,"src":"3163:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7027,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7006,"src":"3177:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":7028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3184:8:49","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6645,"src":"3177:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7019,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3086:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3090:6:49","memberName":"encode","nodeType":"MemberAccess","src":"3086:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3086:107:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7018,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3063:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3063:140:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7010,"id":7031,"nodeType":"Return","src":"3056:147:49"}]},"id":7033,"implemented":true,"kind":"function","modifiers":[],"name":"hash","nameLocation":"2876:4:49","nodeType":"FunctionDefinition","parameters":{"id":7007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7006,"mutability":"mutable","name":"permit","nameLocation":"2926:6:49","nodeType":"VariableDeclaration","scope":7033,"src":"2881:51:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":7005,"nodeType":"UserDefinedTypeName","pathNode":{"id":7004,"name":"ISignatureTransfer.PermitTransferFrom","nameLocations":["2881:18:49","2900:18:49"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"2881:37:49"},"referencedDeclaration":6646,"src":"2881:37:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"}],"src":"2880:53:49"},"returnParameters":{"id":7010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7033,"src":"2957:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7008,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2957:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2956:9:49"},"scope":7264,"src":"2867:343:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7100,"nodeType":"Block","src":"3320:576:49","statements":[{"assignments":[7042],"declarations":[{"constant":false,"id":7042,"mutability":"mutable","name":"numPermitted","nameLocation":"3338:12:49","nodeType":"VariableDeclaration","scope":7100,"src":"3330:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7041,"name":"uint256","nodeType":"ElementaryTypeName","src":"3330:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7046,"initialValue":{"expression":{"expression":{"id":7043,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"3353:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3360:9:49","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6655,"src":"3353:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_memory_ptr_$dyn_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory[] memory"}},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3370:6:49","memberName":"length","nodeType":"MemberAccess","src":"3353:23:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3330:46:49"},{"assignments":[7051],"declarations":[{"constant":false,"id":7051,"mutability":"mutable","name":"tokenPermissionHashes","nameLocation":"3403:21:49","nodeType":"VariableDeclaration","scope":7100,"src":"3386:38:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3386:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7050,"nodeType":"ArrayTypeName","src":"3386:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7057,"initialValue":{"arguments":[{"id":7055,"name":"numPermitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"3441:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3427:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":7052,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3431:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7053,"nodeType":"ArrayTypeName","src":"3431:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":7056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3427:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3386:68:49"},{"body":{"id":7079,"nodeType":"Block","src":"3508:94:49","statements":[{"expression":{"id":7077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7068,"name":"tokenPermissionHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"3522:21:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":7070,"indexExpression":{"id":7069,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"3544:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3522:24:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":7072,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"3571:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3578:9:49","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6655,"src":"3571:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_memory_ptr_$dyn_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory[] memory"}},"id":7075,"indexExpression":{"id":7074,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"3588:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3571:19:49","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}],"id":7071,"name":"_hashTokenPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7263,"src":"3549:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_TokenPermissions_$6638_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct ISignatureTransfer.TokenPermissions memory) pure returns (bytes32)"}},"id":7076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3549:42:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3522:69:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7078,"nodeType":"ExpressionStatement","src":"3522:69:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7062,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"3485:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7063,"name":"numPermitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"3489:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3485:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7080,"initializationExpression":{"assignments":[7059],"declarations":[{"constant":false,"id":7059,"mutability":"mutable","name":"i","nameLocation":"3478:1:49","nodeType":"VariableDeclaration","scope":7080,"src":"3470:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7058,"name":"uint256","nodeType":"ElementaryTypeName","src":"3470:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7061,"initialValue":{"hexValue":"30","id":7060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3482:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3470:13:49"},"loopExpression":{"expression":{"id":7066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3503:3:49","subExpression":{"id":7065,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"3505:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7067,"nodeType":"ExpressionStatement","src":"3503:3:49"},"nodeType":"ForStatement","src":"3465:137:49"},{"expression":{"arguments":[{"arguments":[{"id":7084,"name":"_PERMIT_BATCH_TRANSFER_FROM_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6900,"src":"3670:36:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":7088,"name":"tokenPermissionHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"3751:21:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"id":7086,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3734:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3738:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"3734:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3734:39:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7085,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3724:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3724:50:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7091,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3792:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3796:6:49","memberName":"sender","nodeType":"MemberAccess","src":"3792:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7093,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"3820:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3827:5:49","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6657,"src":"3820:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7095,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"3850:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3857:8:49","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6659,"src":"3850:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7082,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3642:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3646:6:49","memberName":"encode","nodeType":"MemberAccess","src":"3642:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3642:237:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7081,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3619:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3619:270:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7040,"id":7099,"nodeType":"Return","src":"3612:277:49"}]},"id":7101,"implemented":true,"kind":"function","modifiers":[],"name":"hash","nameLocation":"3225:4:49","nodeType":"FunctionDefinition","parameters":{"id":7037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7036,"mutability":"mutable","name":"permit","nameLocation":"3280:6:49","nodeType":"VariableDeclaration","scope":7101,"src":"3230:56:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":7035,"nodeType":"UserDefinedTypeName","pathNode":{"id":7034,"name":"ISignatureTransfer.PermitBatchTransferFrom","nameLocations":["3230:18:49","3249:23:49"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"3230:42:49"},"referencedDeclaration":6660,"src":"3230:42:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"}],"src":"3229:58:49"},"returnParameters":{"id":7040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7101,"src":"3311:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7038,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3311:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3310:9:49"},"scope":7264,"src":"3216:680:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7145,"nodeType":"Block","src":"4094:330:49","statements":[{"assignments":[7114],"declarations":[{"constant":false,"id":7114,"mutability":"mutable","name":"typeHash","nameLocation":"4112:8:49","nodeType":"VariableDeclaration","scope":7145,"src":"4104:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7113,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4104:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7122,"initialValue":{"arguments":[{"arguments":[{"id":7118,"name":"_PERMIT_TRANSFER_FROM_WITNESS_TYPEHASH_STUB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"4150:43:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7119,"name":"witnessTypeString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"4195:17:49","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"expression":{"id":7116,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4133:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4137:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"4133:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4133:80:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7115,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4123:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4123:91:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4104:110:49"},{"assignments":[7124],"declarations":[{"constant":false,"id":7124,"mutability":"mutable","name":"tokenPermissionsHash","nameLocation":"4233:20:49","nodeType":"VariableDeclaration","scope":7145,"src":"4225:28:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7123,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4225:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7129,"initialValue":{"arguments":[{"expression":{"id":7126,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"4278:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":7127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4285:9:49","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"4278:16:49","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}],"id":7125,"name":"_hashTokenPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7263,"src":"4256:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_TokenPermissions_$6638_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct ISignatureTransfer.TokenPermissions memory) pure returns (bytes32)"}},"id":7128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4256:39:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4225:70:49"},{"expression":{"arguments":[{"arguments":[{"id":7133,"name":"typeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7114,"src":"4333:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7134,"name":"tokenPermissionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"4343:20:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7135,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4365:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4369:6:49","memberName":"sender","nodeType":"MemberAccess","src":"4365:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7137,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"4377:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":7138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4384:5:49","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6643,"src":"4377:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7139,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"4391:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom memory"}},"id":7140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4398:8:49","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6645,"src":"4391:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7141,"name":"witness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7106,"src":"4408:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7131,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4322:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4326:6:49","memberName":"encode","nodeType":"MemberAccess","src":"4322:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:94:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7130,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4312:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4312:105:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7112,"id":7144,"nodeType":"Return","src":"4305:112:49"}]},"id":7146,"implemented":true,"kind":"function","modifiers":[],"name":"hashWithWitness","nameLocation":"3911:15:49","nodeType":"FunctionDefinition","parameters":{"id":7109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7104,"mutability":"mutable","name":"permit","nameLocation":"3981:6:49","nodeType":"VariableDeclaration","scope":7146,"src":"3936:51:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":7103,"nodeType":"UserDefinedTypeName","pathNode":{"id":7102,"name":"ISignatureTransfer.PermitTransferFrom","nameLocations":["3936:18:49","3955:18:49"],"nodeType":"IdentifierPath","referencedDeclaration":6646,"src":"3936:37:49"},"referencedDeclaration":6646,"src":"3936:37:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$6646_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":7106,"mutability":"mutable","name":"witness","nameLocation":"4005:7:49","nodeType":"VariableDeclaration","scope":7146,"src":"3997:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7105,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3997:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7108,"mutability":"mutable","name":"witnessTypeString","nameLocation":"4038:17:49","nodeType":"VariableDeclaration","scope":7146,"src":"4022:33:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7107,"name":"string","nodeType":"ElementaryTypeName","src":"4022:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3926:135:49"},"returnParameters":{"id":7112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7146,"src":"4085:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7110,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4085:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4084:9:49"},"scope":7264,"src":"3902:522:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7228,"nodeType":"Block","src":"4627:712:49","statements":[{"assignments":[7159],"declarations":[{"constant":false,"id":7159,"mutability":"mutable","name":"typeHash","nameLocation":"4645:8:49","nodeType":"VariableDeclaration","scope":7228,"src":"4637:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4637:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7167,"initialValue":{"arguments":[{"arguments":[{"id":7163,"name":"_PERMIT_BATCH_WITNESS_TRANSFER_FROM_TYPEHASH_STUB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6909,"src":"4695:49:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7164,"name":"witnessTypeString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7153,"src":"4746:17:49","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"expression":{"id":7161,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4678:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4682:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"4678:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4678:86:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7160,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4668:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4668:97:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4637:128:49"},{"assignments":[7169],"declarations":[{"constant":false,"id":7169,"mutability":"mutable","name":"numPermitted","nameLocation":"4784:12:49","nodeType":"VariableDeclaration","scope":7228,"src":"4776:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7168,"name":"uint256","nodeType":"ElementaryTypeName","src":"4776:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7173,"initialValue":{"expression":{"expression":{"id":7170,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"4799:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7171,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4806:9:49","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6655,"src":"4799:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_memory_ptr_$dyn_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory[] memory"}},"id":7172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4816:6:49","memberName":"length","nodeType":"MemberAccess","src":"4799:23:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4776:46:49"},{"assignments":[7178],"declarations":[{"constant":false,"id":7178,"mutability":"mutable","name":"tokenPermissionHashes","nameLocation":"4849:21:49","nodeType":"VariableDeclaration","scope":7228,"src":"4832:38:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7176,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4832:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7177,"nodeType":"ArrayTypeName","src":"4832:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7184,"initialValue":{"arguments":[{"id":7182,"name":"numPermitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7169,"src":"4887:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4873:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":7179,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4877:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7180,"nodeType":"ArrayTypeName","src":"4877:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":7183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4832:68:49"},{"body":{"id":7206,"nodeType":"Block","src":"4954:94:49","statements":[{"expression":{"id":7204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7195,"name":"tokenPermissionHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"4968:21:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":7197,"indexExpression":{"id":7196,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"4990:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4968:24:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":7199,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"5017:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5024:9:49","memberName":"permitted","nodeType":"MemberAccess","referencedDeclaration":6655,"src":"5017:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$6638_memory_ptr_$dyn_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory[] memory"}},"id":7202,"indexExpression":{"id":7201,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"5034:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5017:19:49","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}],"id":7198,"name":"_hashTokenPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7263,"src":"4995:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_TokenPermissions_$6638_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct ISignatureTransfer.TokenPermissions memory) pure returns (bytes32)"}},"id":7203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4995:42:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4968:69:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7205,"nodeType":"ExpressionStatement","src":"4968:69:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7189,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"4931:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7190,"name":"numPermitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7169,"src":"4935:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4931:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7207,"initializationExpression":{"assignments":[7186],"declarations":[{"constant":false,"id":7186,"mutability":"mutable","name":"i","nameLocation":"4924:1:49","nodeType":"VariableDeclaration","scope":7207,"src":"4916:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7185,"name":"uint256","nodeType":"ElementaryTypeName","src":"4916:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7188,"initialValue":{"hexValue":"30","id":7187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4928:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4916:13:49"},"loopExpression":{"expression":{"id":7193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4949:3:49","subExpression":{"id":7192,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"4951:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7194,"nodeType":"ExpressionStatement","src":"4949:3:49"},"nodeType":"ForStatement","src":"4911:137:49"},{"expression":{"arguments":[{"arguments":[{"id":7211,"name":"typeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"5116:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":7215,"name":"tokenPermissionHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"5169:21:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"id":7213,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5152:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5156:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"5152:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5152:39:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7212,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5142:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:50:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7218,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5210:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5214:6:49","memberName":"sender","nodeType":"MemberAccess","src":"5210:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7220,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"5238:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5245:5:49","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":6657,"src":"5238:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7222,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"5268:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom memory"}},"id":7223,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5275:8:49","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":6659,"src":"5268:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7224,"name":"witness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7151,"src":"5301:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7209,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5088:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5092:6:49","memberName":"encode","nodeType":"MemberAccess","src":"5088:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5088:234:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7208,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5065:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5065:267:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7157,"id":7227,"nodeType":"Return","src":"5058:274:49"}]},"id":7229,"implemented":true,"kind":"function","modifiers":[],"name":"hashWithWitness","nameLocation":"4439:15:49","nodeType":"FunctionDefinition","parameters":{"id":7154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7149,"mutability":"mutable","name":"permit","nameLocation":"4514:6:49","nodeType":"VariableDeclaration","scope":7229,"src":"4464:56:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":7148,"nodeType":"UserDefinedTypeName","pathNode":{"id":7147,"name":"ISignatureTransfer.PermitBatchTransferFrom","nameLocations":["4464:18:49","4483:23:49"],"nodeType":"IdentifierPath","referencedDeclaration":6660,"src":"4464:42:49"},"referencedDeclaration":6660,"src":"4464:42:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$6660_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":7151,"mutability":"mutable","name":"witness","nameLocation":"4538:7:49","nodeType":"VariableDeclaration","scope":7229,"src":"4530:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7150,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4530:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7153,"mutability":"mutable","name":"witnessTypeString","nameLocation":"4571:17:49","nodeType":"VariableDeclaration","scope":7229,"src":"4555:33:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7152,"name":"string","nodeType":"ElementaryTypeName","src":"4555:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4454:140:49"},"returnParameters":{"id":7157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7229,"src":"4618:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4618:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4617:9:49"},"scope":7264,"src":"4430:909:49","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7245,"nodeType":"Block","src":"5453:80:49","statements":[{"expression":{"arguments":[{"arguments":[{"id":7240,"name":"_PERMIT_DETAILS_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6875,"src":"5491:24:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7241,"name":"details","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"5517:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails memory"}],"expression":{"id":7238,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5480:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5484:6:49","memberName":"encode","nodeType":"MemberAccess","src":"5480:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5480:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7237,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5470:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5470:56:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7236,"id":7244,"nodeType":"Return","src":"5463:63:49"}]},"id":7246,"implemented":true,"kind":"function","modifiers":[],"name":"_hashPermitDetails","nameLocation":"5354:18:49","nodeType":"FunctionDefinition","parameters":{"id":7233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7232,"mutability":"mutable","name":"details","nameLocation":"5413:7:49","nodeType":"VariableDeclaration","scope":7246,"src":"5373:47:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_memory_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"},"typeName":{"id":7231,"nodeType":"UserDefinedTypeName","pathNode":{"id":7230,"name":"IAllowanceTransfer.PermitDetails","nameLocations":["5373:18:49","5392:13:49"],"nodeType":"IdentifierPath","referencedDeclaration":6473,"src":"5373:32:49"},"referencedDeclaration":6473,"src":"5373:32:49","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$6473_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"}},"visibility":"internal"}],"src":"5372:49:49"},"returnParameters":{"id":7236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7246,"src":"5444:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5444:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5443:9:49"},"scope":7264,"src":"5345:188:49","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7262,"nodeType":"Block","src":"5683:85:49","statements":[{"expression":{"arguments":[{"arguments":[{"id":7257,"name":"_TOKEN_PERMISSIONS_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"5721:27:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7258,"name":"permitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"5750:9:49","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions memory"}],"expression":{"id":7255,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5710:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5714:6:49","memberName":"encode","nodeType":"MemberAccess","src":"5710:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5710:50:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7254,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5700:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5700:61:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7253,"id":7261,"nodeType":"Return","src":"5693:68:49"}]},"id":7263,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTokenPermissions","nameLocation":"5548:21:49","nodeType":"FunctionDefinition","parameters":{"id":7250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7249,"mutability":"mutable","name":"permitted","nameLocation":"5613:9:49","nodeType":"VariableDeclaration","scope":7263,"src":"5570:52:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_memory_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"},"typeName":{"id":7248,"nodeType":"UserDefinedTypeName","pathNode":{"id":7247,"name":"ISignatureTransfer.TokenPermissions","nameLocations":["5570:18:49","5589:16:49"],"nodeType":"IdentifierPath","referencedDeclaration":6638,"src":"5570:35:49"},"referencedDeclaration":6638,"src":"5570:35:49","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$6638_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"}},"visibility":"internal"}],"src":"5569:54:49"},"returnParameters":{"id":7253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7252,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7263,"src":"5670:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5670:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5669:9:49"},"scope":7264,"src":"5539:229:49","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":7265,"src":"205:5565:49","usedErrors":[]}],"src":"32:5739:49"},"id":49},"permit2/src/libraries/SafeCast160.sol":{"ast":{"absolutePath":"permit2/src/libraries/SafeCast160.sol","exportedSymbols":{"SafeCast160":[7295]},"id":7296,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7266,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:50"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast160","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":7295,"linearizedBaseContracts":[7295],"name":"SafeCast160","nameLocation":"66:11:50","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7267,"nodeType":"StructuredDocumentation","src":"84:82:50","text":"@notice Thrown when a valude greater than type(uint160).max is cast to uint160"},"errorSelector":"c4bd89a9","id":7269,"name":"UnsafeCast","nameLocation":"177:10:50","nodeType":"ErrorDefinition","parameters":{"id":7268,"nodeType":"ParameterList","parameters":[],"src":"187:2:50"},"src":"171:19:50"},{"body":{"id":7293,"nodeType":"Block","src":"354:98:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7277,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7272,"src":"368:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"381:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7279,"name":"uint160","nodeType":"ElementaryTypeName","src":"381:7:50","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":7278,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"376:4:50","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"376:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":7282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"390:3:50","memberName":"max","nodeType":"MemberAccess","src":"376:17:50","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"368:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7287,"nodeType":"IfStatement","src":"364:50:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7284,"name":"UnsafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"402:10:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"402:12:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7286,"nodeType":"RevertStatement","src":"395:19:50"}},{"expression":{"arguments":[{"id":7290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7272,"src":"439:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"431:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7288,"name":"uint160","nodeType":"ElementaryTypeName","src":"431:7:50","typeDescriptions":{}}},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"431:14:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7276,"id":7292,"nodeType":"Return","src":"424:21:50"}]},"documentation":{"id":7270,"nodeType":"StructuredDocumentation","src":"196:87:50","text":"@notice Safely casts uint256 to uint160\n @param value The uint256 to be cast"},"id":7294,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"297:9:50","nodeType":"FunctionDefinition","parameters":{"id":7273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7272,"mutability":"mutable","name":"value","nameLocation":"315:5:50","nodeType":"VariableDeclaration","scope":7294,"src":"307:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7271,"name":"uint256","nodeType":"ElementaryTypeName","src":"307:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"306:15:50"},"returnParameters":{"id":7276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7294,"src":"345:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7274,"name":"uint160","nodeType":"ElementaryTypeName","src":"345:7:50","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"344:9:50"},"scope":7295,"src":"288:164:50","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7296,"src":"58:396:50","usedErrors":[7269]}],"src":"32:423:50"},"id":50},"permit2/src/libraries/SignatureVerification.sol":{"ast":{"absolutePath":"permit2/src/libraries/SignatureVerification.sol","exportedSymbols":{"IERC1271":[6613],"SignatureVerification":[7464]},"id":7465,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7297,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:51"},{"absolutePath":"permit2/src/interfaces/IERC1271.sol","file":"../interfaces/IERC1271.sol","id":7299,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7465,"sourceUnit":6614,"src":"58:52:51","symbolAliases":[{"foreign":{"id":7298,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6613,"src":"66:8:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignatureVerification","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":7464,"linearizedBaseContracts":[7464],"name":"SignatureVerification","nameLocation":"120:21:51","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7300,"nodeType":"StructuredDocumentation","src":"148:69:51","text":"@notice Thrown when the passed in signature is not a valid length"},"errorSelector":"4be6321b","id":7302,"name":"InvalidSignatureLength","nameLocation":"228:22:51","nodeType":"ErrorDefinition","parameters":{"id":7301,"nodeType":"ParameterList","parameters":[],"src":"250:2:51"},"src":"222:31:51"},{"documentation":{"id":7303,"nodeType":"StructuredDocumentation","src":"259:73:51","text":"@notice Thrown when the recovered signer is equal to the zero address"},"errorSelector":"8baa579f","id":7305,"name":"InvalidSignature","nameLocation":"343:16:51","nodeType":"ErrorDefinition","parameters":{"id":7304,"nodeType":"ParameterList","parameters":[],"src":"359:2:51"},"src":"337:25:51"},{"documentation":{"id":7306,"nodeType":"StructuredDocumentation","src":"368:77:51","text":"@notice Thrown when the recovered signer does not equal the claimedSigner"},"errorSelector":"815e1d64","id":7308,"name":"InvalidSigner","nameLocation":"456:13:51","nodeType":"ErrorDefinition","parameters":{"id":7307,"nodeType":"ParameterList","parameters":[],"src":"469:2:51"},"src":"450:22:51"},{"documentation":{"id":7309,"nodeType":"StructuredDocumentation","src":"478:69:51","text":"@notice Thrown when the recovered contract signature is incorrect"},"errorSelector":"b0669cbc","id":7311,"name":"InvalidContractSignature","nameLocation":"558:24:51","nodeType":"ErrorDefinition","parameters":{"id":7310,"nodeType":"ParameterList","parameters":[],"src":"582:2:51"},"src":"552:33:51"},{"constant":true,"id":7315,"mutability":"constant","name":"UPPER_BIT_MASK","nameLocation":"608:14:51","nodeType":"VariableDeclaration","scope":7464,"src":"591:102:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7312,"name":"bytes32","nodeType":"ElementaryTypeName","src":"591:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"components":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":7313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"626:66:51","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"id":7314,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"625:68:51","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}},"visibility":"internal"},{"body":{"id":7462,"nodeType":"Block","src":"793:1016:51","statements":[{"assignments":[7325],"declarations":[{"constant":false,"id":7325,"mutability":"mutable","name":"r","nameLocation":"811:1:51","nodeType":"VariableDeclaration","scope":7462,"src":"803:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"803:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7326,"nodeType":"VariableDeclarationStatement","src":"803:9:51"},{"assignments":[7328],"declarations":[{"constant":false,"id":7328,"mutability":"mutable","name":"s","nameLocation":"830:1:51","nodeType":"VariableDeclaration","scope":7462,"src":"822:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7327,"name":"bytes32","nodeType":"ElementaryTypeName","src":"822:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7329,"nodeType":"VariableDeclarationStatement","src":"822:9:51"},{"assignments":[7331],"declarations":[{"constant":false,"id":7331,"mutability":"mutable","name":"v","nameLocation":"847:1:51","nodeType":"VariableDeclaration","scope":7462,"src":"841:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7330,"name":"uint8","nodeType":"ElementaryTypeName","src":"841:5:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":7332,"nodeType":"VariableDeclarationStatement","src":"841:7:51"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7333,"name":"claimedSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"863:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"877:4:51","memberName":"code","nodeType":"MemberAccess","src":"863:18:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"882:6:51","memberName":"length","nodeType":"MemberAccess","src":"863:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"863:30:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7460,"nodeType":"Block","src":"1600:203:51","statements":[{"assignments":[7442],"declarations":[{"constant":false,"id":7442,"mutability":"mutable","name":"magicValue","nameLocation":"1621:10:51","nodeType":"VariableDeclaration","scope":7460,"src":"1614:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7441,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1614:6:51","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":7450,"initialValue":{"arguments":[{"id":7447,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7319,"src":"1675:4:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7448,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"1681:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":7444,"name":"claimedSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"1643:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7443,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6613,"src":"1634:8:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$6613_$","typeString":"type(contract IERC1271)"}},"id":7445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1634:23:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$6613","typeString":"contract IERC1271"}},"id":7446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1658:16:51","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":6612,"src":"1634:40:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":7449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1634:57:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"1614:77:51"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7451,"name":"magicValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7442,"src":"1709:10:51","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":7452,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6613,"src":"1723:8:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$6613_$","typeString":"type(contract IERC1271)"}},"id":7453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1732:16:51","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":6612,"src":"1723:25:51","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},"id":7454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1749:8:51","memberName":"selector","nodeType":"MemberAccess","src":"1723:34:51","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1709:48:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7459,"nodeType":"IfStatement","src":"1705:87:51","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7456,"name":"InvalidContractSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7311,"src":"1766:24:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1766:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7458,"nodeType":"RevertStatement","src":"1759:33:51"}}]},"id":7461,"nodeType":"IfStatement","src":"859:944:51","trueBody":{"id":7440,"nodeType":"Block","src":"895:699:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7338,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"913:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":7339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"923:6:51","memberName":"length","nodeType":"MemberAccess","src":"913:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":7340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"933:2:51","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"913:22:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7366,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"1072:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1082:6:51","memberName":"length","nodeType":"MemberAccess","src":"1072:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3634","id":7368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1092:2:51","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1072:22:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7411,"nodeType":"Block","src":"1335:64:51","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7408,"name":"InvalidSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7302,"src":"1360:22:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1360:24:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7410,"nodeType":"RevertStatement","src":"1353:31:51"}]},"id":7412,"nodeType":"IfStatement","src":"1068:331:51","trueBody":{"id":7407,"nodeType":"Block","src":"1096:233:51","statements":[{"assignments":[7371],"declarations":[{"constant":false,"id":7371,"mutability":"mutable","name":"vs","nameLocation":"1150:2:51","nodeType":"VariableDeclaration","scope":7407,"src":"1142:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7370,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1142:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7372,"nodeType":"VariableDeclarationStatement","src":"1142:10:51"},{"expression":{"id":7385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7373,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"1171:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7374,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7371,"src":"1174:2:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":7375,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1170:7:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7378,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"1191:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":7380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1203:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7379,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1203:7:51","typeDescriptions":{}}},{"id":7382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1212:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7381,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1212:7:51","typeDescriptions":{}}}],"id":7383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1202:18:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$","typeString":"tuple(type(bytes32),type(bytes32))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$","typeString":"tuple(type(bytes32),type(bytes32))"}],"expression":{"id":7376,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1180:3:51","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1184:6:51","memberName":"decode","nodeType":"MemberAccess","src":"1180:10:51","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1180:41:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"src":"1170:51:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7386,"nodeType":"ExpressionStatement","src":"1170:51:51"},{"expression":{"id":7391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7387,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"1239:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7388,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7371,"src":"1243:2:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":7389,"name":"UPPER_BIT_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"1248:14:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1243:19:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1239:23:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7392,"nodeType":"ExpressionStatement","src":"1239:23:51"},{"expression":{"id":7405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7393,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7331,"src":"1280:1:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":7400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7398,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7371,"src":"1298:2:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":7399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1304:3:51","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1298:9:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1290:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1290:7:51","typeDescriptions":{}}},"id":7401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1290:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1284:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7394,"name":"uint8","nodeType":"ElementaryTypeName","src":"1284:5:51","typeDescriptions":{}}},"id":7402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1284:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":7403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1312:2:51","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"1284:30:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1280:34:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7406,"nodeType":"ExpressionStatement","src":"1280:34:51"}]}},"id":7413,"nodeType":"IfStatement","src":"909:490:51","trueBody":{"id":7365,"nodeType":"Block","src":"937:125:51","statements":[{"expression":{"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7342,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"956:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7343,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"959:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":7344,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"955:6:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7347,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"975:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":7349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"987:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"987:7:51","typeDescriptions":{}}},{"id":7351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"996:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7350,"name":"bytes32","nodeType":"ElementaryTypeName","src":"996:7:51","typeDescriptions":{}}}],"id":7352,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"986:18:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$","typeString":"tuple(type(bytes32),type(bytes32))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$","typeString":"tuple(type(bytes32),type(bytes32))"}],"expression":{"id":7345,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"964:3:51","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"968:6:51","memberName":"decode","nodeType":"MemberAccess","src":"964:10:51","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"964:41:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"src":"955:50:51","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7355,"nodeType":"ExpressionStatement","src":"955:50:51"},{"expression":{"id":7363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7356,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7331,"src":"1023:1:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":7359,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"1033:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":7361,"indexExpression":{"hexValue":"3634","id":7360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1043:2:51","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1033:13:51","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":7358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1027:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7357,"name":"uint8","nodeType":"ElementaryTypeName","src":"1027:5:51","typeDescriptions":{}}},"id":7362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1027:20:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1023:24:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7364,"nodeType":"ExpressionStatement","src":"1023:24:51"}]}},{"assignments":[7415],"declarations":[{"constant":false,"id":7415,"mutability":"mutable","name":"signer","nameLocation":"1420:6:51","nodeType":"VariableDeclaration","scope":7440,"src":"1412:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7414,"name":"address","nodeType":"ElementaryTypeName","src":"1412:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7422,"initialValue":{"arguments":[{"id":7417,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7319,"src":"1439:4:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7418,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7331,"src":"1445:1:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":7419,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"1448:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7420,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"1451:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7416,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"1429:9:51","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":7421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1429:24:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1412:41:51"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7423,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"1471:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1489:1:51","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":7425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1481:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7424,"name":"address","nodeType":"ElementaryTypeName","src":"1481:7:51","typeDescriptions":{}}},"id":7427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1481:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1471:20:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7432,"nodeType":"IfStatement","src":"1467:51:51","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7429,"name":"InvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7305,"src":"1500:16:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1500:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7431,"nodeType":"RevertStatement","src":"1493:25:51"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7433,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"1536:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7434,"name":"claimedSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"1546:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1536:23:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7439,"nodeType":"IfStatement","src":"1532:51:51","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7436,"name":"InvalidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7308,"src":"1568:13:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1568:15:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7438,"nodeType":"RevertStatement","src":"1561:22:51"}}]}}]},"id":7463,"implemented":true,"kind":"function","modifiers":[],"name":"verify","nameLocation":"709:6:51","nodeType":"FunctionDefinition","parameters":{"id":7322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7317,"mutability":"mutable","name":"signature","nameLocation":"731:9:51","nodeType":"VariableDeclaration","scope":7463,"src":"716:24:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7316,"name":"bytes","nodeType":"ElementaryTypeName","src":"716:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7319,"mutability":"mutable","name":"hash","nameLocation":"750:4:51","nodeType":"VariableDeclaration","scope":7463,"src":"742:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7318,"name":"bytes32","nodeType":"ElementaryTypeName","src":"742:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7321,"mutability":"mutable","name":"claimedSigner","nameLocation":"764:13:51","nodeType":"VariableDeclaration","scope":7463,"src":"756:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7320,"name":"address","nodeType":"ElementaryTypeName","src":"756:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"715:63:51"},"returnParameters":{"id":7323,"nodeType":"ParameterList","parameters":[],"src":"793:0:51"},"scope":7464,"src":"700:1109:51","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7465,"src":"112:1699:51","usedErrors":[7302,7305,7308,7311]}],"src":"32:1780:51"},"id":51},"solmate/src/tokens/ERC1155.sol":{"ast":{"absolutePath":"solmate/src/tokens/ERC1155.sol","exportedSymbols":{"ERC1155":[8099],"ERC1155TokenReceiver":[8143]},"id":8144,"license":"AGPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":7466,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"42:24:52"},{"abstract":true,"baseContracts":[],"canonicalName":"ERC1155","contractDependencies":[],"contractKind":"contract","documentation":{"id":7467,"nodeType":"StructuredDocumentation","src":"68:172:52","text":"@notice Minimalist and gas efficient standard ERC1155 implementation.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)"},"fullyImplemented":false,"id":8099,"linearizedBaseContracts":[8099],"name":"ERC1155","nameLocation":"258:7:52","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62","id":7479,"name":"TransferSingle","nameLocation":"457:14:52","nodeType":"EventDefinition","parameters":{"id":7478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7469,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"497:8:52","nodeType":"VariableDeclaration","scope":7479,"src":"481:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7468,"name":"address","nodeType":"ElementaryTypeName","src":"481:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7471,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"531:4:52","nodeType":"VariableDeclaration","scope":7479,"src":"515:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7470,"name":"address","nodeType":"ElementaryTypeName","src":"515:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7473,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"561:2:52","nodeType":"VariableDeclaration","scope":7479,"src":"545:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7472,"name":"address","nodeType":"ElementaryTypeName","src":"545:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7475,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"581:2:52","nodeType":"VariableDeclaration","scope":7479,"src":"573:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7474,"name":"uint256","nodeType":"ElementaryTypeName","src":"573:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7477,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"601:6:52","nodeType":"VariableDeclaration","scope":7479,"src":"593:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7476,"name":"uint256","nodeType":"ElementaryTypeName","src":"593:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"471:142:52"},"src":"451:163:52"},{"anonymous":false,"eventSelector":"4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb","id":7493,"name":"TransferBatch","nameLocation":"626:13:52","nodeType":"EventDefinition","parameters":{"id":7492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7481,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"665:8:52","nodeType":"VariableDeclaration","scope":7493,"src":"649:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7480,"name":"address","nodeType":"ElementaryTypeName","src":"649:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7483,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"699:4:52","nodeType":"VariableDeclaration","scope":7493,"src":"683:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7482,"name":"address","nodeType":"ElementaryTypeName","src":"683:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7485,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"729:2:52","nodeType":"VariableDeclaration","scope":7493,"src":"713:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7484,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7488,"indexed":false,"mutability":"mutable","name":"ids","nameLocation":"751:3:52","nodeType":"VariableDeclaration","scope":7493,"src":"741:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7486,"name":"uint256","nodeType":"ElementaryTypeName","src":"741:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7487,"nodeType":"ArrayTypeName","src":"741:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7491,"indexed":false,"mutability":"mutable","name":"amounts","nameLocation":"774:7:52","nodeType":"VariableDeclaration","scope":7493,"src":"764:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7489,"name":"uint256","nodeType":"ElementaryTypeName","src":"764:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7490,"nodeType":"ArrayTypeName","src":"764:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"639:148:52"},"src":"620:168:52"},{"anonymous":false,"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":7501,"name":"ApprovalForAll","nameLocation":"800:14:52","nodeType":"EventDefinition","parameters":{"id":7500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7495,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"831:5:52","nodeType":"VariableDeclaration","scope":7501,"src":"815:21:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7494,"name":"address","nodeType":"ElementaryTypeName","src":"815:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7497,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"854:8:52","nodeType":"VariableDeclaration","scope":7501,"src":"838:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7496,"name":"address","nodeType":"ElementaryTypeName","src":"838:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7499,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"869:8:52","nodeType":"VariableDeclaration","scope":7501,"src":"864:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7498,"name":"bool","nodeType":"ElementaryTypeName","src":"864:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"814:64:52"},"src":"794:85:52"},{"anonymous":false,"eventSelector":"6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b","id":7507,"name":"URI","nameLocation":"891:3:52","nodeType":"EventDefinition","parameters":{"id":7506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7503,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"902:5:52","nodeType":"VariableDeclaration","scope":7507,"src":"895:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7502,"name":"string","nodeType":"ElementaryTypeName","src":"895:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7505,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"925:2:52","nodeType":"VariableDeclaration","scope":7507,"src":"909:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7504,"name":"uint256","nodeType":"ElementaryTypeName","src":"909:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"894:34:52"},"src":"885:44:52"},{"constant":false,"functionSelector":"00fdd58e","id":7513,"mutability":"mutable","name":"balanceOf","nameLocation":"1174:9:52","nodeType":"VariableDeclaration","scope":8099,"src":"1119:64:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":7512,"keyType":{"id":7508,"name":"address","nodeType":"ElementaryTypeName","src":"1127:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1119:47:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":7511,"keyType":{"id":7509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1146:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1138:27:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":7510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"constant":false,"functionSelector":"e985e9c5","id":7519,"mutability":"mutable","name":"isApprovedForAll","nameLocation":"1242:16:52","nodeType":"VariableDeclaration","scope":8099,"src":"1190:68:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":7518,"keyType":{"id":7514,"name":"address","nodeType":"ElementaryTypeName","src":"1198:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1190:44:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":7517,"keyType":{"id":7515,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1209:24:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":7516,"name":"bool","nodeType":"ElementaryTypeName","src":"1228:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"functionSelector":"0e89341c","id":7526,"implemented":false,"kind":"function","modifiers":[],"name":"uri","nameLocation":"1457:3:52","nodeType":"FunctionDefinition","parameters":{"id":7522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7521,"mutability":"mutable","name":"id","nameLocation":"1469:2:52","nodeType":"VariableDeclaration","scope":7526,"src":"1461:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7520,"name":"uint256","nodeType":"ElementaryTypeName","src":"1461:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:12:52"},"returnParameters":{"id":7525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7526,"src":"1502:13:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7523,"name":"string","nodeType":"ElementaryTypeName","src":"1502:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1501:15:52"},"scope":8099,"src":"1448:69:52","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":7549,"nodeType":"Block","src":"1781:128:52","statements":[{"expression":{"id":7540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7533,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7519,"src":"1791:16:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7537,"indexExpression":{"expression":{"id":7534,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1808:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1812:6:52","memberName":"sender","nodeType":"MemberAccess","src":"1808:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1791:28:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7538,"indexExpression":{"id":7536,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7528,"src":"1820:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1791:38:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7539,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7530,"src":"1832:8:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1791:49:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7541,"nodeType":"ExpressionStatement","src":"1791:49:52"},{"eventCall":{"arguments":[{"expression":{"id":7543,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1871:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1875:6:52","memberName":"sender","nodeType":"MemberAccess","src":"1871:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7545,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7528,"src":"1883:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7546,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7530,"src":"1893:8:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7542,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7501,"src":"1856:14:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1856:46:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7548,"nodeType":"EmitStatement","src":"1851:51:52"}]},"functionSelector":"a22cb465","id":7550,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"1715:17:52","nodeType":"FunctionDefinition","parameters":{"id":7531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7528,"mutability":"mutable","name":"operator","nameLocation":"1741:8:52","nodeType":"VariableDeclaration","scope":7550,"src":"1733:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7527,"name":"address","nodeType":"ElementaryTypeName","src":"1733:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7530,"mutability":"mutable","name":"approved","nameLocation":"1756:8:52","nodeType":"VariableDeclaration","scope":7550,"src":"1751:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7529,"name":"bool","nodeType":"ElementaryTypeName","src":"1751:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1732:33:52"},"returnParameters":{"id":7532,"nodeType":"ParameterList","parameters":[],"src":"1781:0:52"},"scope":8099,"src":"1706:203:52","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7634,"nodeType":"Block","src":"2077:537:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7564,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2095:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2099:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2095:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7566,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7552,"src":"2109:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2095:18:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"baseExpression":{"id":7568,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7519,"src":"2117:16:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7570,"indexExpression":{"id":7569,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7552,"src":"2134:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2117:22:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7573,"indexExpression":{"expression":{"id":7571,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2140:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2144:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2140:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2117:34:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2095:56:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f415554484f52495a4544","id":7575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2153:16:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""},"value":"NOT_AUTHORIZED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""}],"id":7563,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2087:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2087:83:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7577,"nodeType":"ExpressionStatement","src":"2087:83:52"},{"expression":{"id":7584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7578,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"2181:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7581,"indexExpression":{"id":7579,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7552,"src":"2191:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2181:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7582,"indexExpression":{"id":7580,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"2197:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2181:19:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7583,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"2204:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2181:29:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7585,"nodeType":"ExpressionStatement","src":"2181:29:52"},{"expression":{"id":7592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7586,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"2220:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7589,"indexExpression":{"id":7587,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"2230:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2220:13:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7590,"indexExpression":{"id":7588,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"2234:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2220:17:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7591,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"2241:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2220:27:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7593,"nodeType":"ExpressionStatement","src":"2220:27:52"},{"eventCall":{"arguments":[{"expression":{"id":7595,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2278:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2282:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2278:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7597,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7552,"src":"2290:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7598,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"2296:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7599,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"2300:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7600,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"2304:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7594,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7479,"src":"2263:14:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":7601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:48:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7602,"nodeType":"EmitStatement","src":"2258:53:52"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7604,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"2343:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2346:4:52","memberName":"code","nodeType":"MemberAccess","src":"2343:7:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2351:6:52","memberName":"length","nodeType":"MemberAccess","src":"2343:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2361:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2343:19:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":7619,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2459:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2459:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7621,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7552,"src":"2471:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7622,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"2477:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7623,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"2481:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7624,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"2489:4:52","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"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_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":7616,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"2437:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7615,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"2416:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2416:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155TokenReceiver_$8143","typeString":"contract ERC1155TokenReceiver"}},"id":7618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2441:17:52","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":8120,"src":"2416:42:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"}},"id":7625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2416:78:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":7626,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"2518:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2539:17:52","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":8120,"src":"2518:38:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC1155TokenReceiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"}},"id":7628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2557:8:52","memberName":"selector","nodeType":"MemberAccess","src":"2518:47:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2416:149:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2343:222:52","trueExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7609,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"2381:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2395:1:52","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":7611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2387:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7610,"name":"address","nodeType":"ElementaryTypeName","src":"2387:7:52","typeDescriptions":{}}},"id":7613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2387:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2381:16:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":7631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2579:18:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":7603,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2322:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:285:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7633,"nodeType":"ExpressionStatement","src":"2322:285:52"}]},"functionSelector":"f242432a","id":7635,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1924:16:52","nodeType":"FunctionDefinition","parameters":{"id":7561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7552,"mutability":"mutable","name":"from","nameLocation":"1958:4:52","nodeType":"VariableDeclaration","scope":7635,"src":"1950:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7551,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7554,"mutability":"mutable","name":"to","nameLocation":"1980:2:52","nodeType":"VariableDeclaration","scope":7635,"src":"1972:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7553,"name":"address","nodeType":"ElementaryTypeName","src":"1972:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7556,"mutability":"mutable","name":"id","nameLocation":"2000:2:52","nodeType":"VariableDeclaration","scope":7635,"src":"1992:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7555,"name":"uint256","nodeType":"ElementaryTypeName","src":"1992:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7558,"mutability":"mutable","name":"amount","nameLocation":"2020:6:52","nodeType":"VariableDeclaration","scope":7635,"src":"2012:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7557,"name":"uint256","nodeType":"ElementaryTypeName","src":"2012:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7560,"mutability":"mutable","name":"data","nameLocation":"2051:4:52","nodeType":"VariableDeclaration","scope":7635,"src":"2036:19:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7559,"name":"bytes","nodeType":"ElementaryTypeName","src":"2036:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1940:121:52"},"returnParameters":{"id":7562,"nodeType":"ParameterList","parameters":[],"src":"2077:0:52"},"scope":8099,"src":"1915:699:52","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7762,"nodeType":"Block","src":"2811:1018:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7651,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"2829:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2833:6:52","memberName":"length","nodeType":"MemberAccess","src":"2829:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7653,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7645,"src":"2843:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2851:6:52","memberName":"length","nodeType":"MemberAccess","src":"2843:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2829:28:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c454e4754485f4d49534d41544348","id":7656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2859:17:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""},"value":"LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""}],"id":7650,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2821:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2821:56:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7658,"nodeType":"ExpressionStatement","src":"2821:56:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7660,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2896:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2900:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2896:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7662,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"2910:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2896:18:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"baseExpression":{"id":7664,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7519,"src":"2918:16:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7666,"indexExpression":{"id":7665,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"2935:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2918:22:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7669,"indexExpression":{"expression":{"id":7667,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2941:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2945:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2941:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2918:34:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2896:56:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f415554484f52495a4544","id":7671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2954:16:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""},"value":"NOT_AUTHORIZED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""}],"id":7659,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2888:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2888:83:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7673,"nodeType":"ExpressionStatement","src":"2888:83:52"},{"assignments":[7675],"declarations":[{"constant":false,"id":7675,"mutability":"mutable","name":"id","nameLocation":"3061:2:52","nodeType":"VariableDeclaration","scope":7762,"src":"3053:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7674,"name":"uint256","nodeType":"ElementaryTypeName","src":"3053:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7676,"nodeType":"VariableDeclarationStatement","src":"3053:10:52"},{"assignments":[7678],"declarations":[{"constant":false,"id":7678,"mutability":"mutable","name":"amount","nameLocation":"3081:6:52","nodeType":"VariableDeclaration","scope":7762,"src":"3073:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7677,"name":"uint256","nodeType":"ElementaryTypeName","src":"3073:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7679,"nodeType":"VariableDeclarationStatement","src":"3073:14:52"},{"body":{"id":7720,"nodeType":"Block","src":"3136:314:52","statements":[{"expression":{"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7688,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7675,"src":"3150:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":7689,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"3155:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7691,"indexExpression":{"id":7690,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7681,"src":"3159:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3155:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3150:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7693,"nodeType":"ExpressionStatement","src":"3150:11:52"},{"expression":{"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7694,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"3175:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":7695,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7645,"src":"3184:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7697,"indexExpression":{"id":7696,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7681,"src":"3192:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3184:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3175:19:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7699,"nodeType":"ExpressionStatement","src":"3175:19:52"},{"expression":{"id":7706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7700,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"3209:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7703,"indexExpression":{"id":7701,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"3219:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3209:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7704,"indexExpression":{"id":7702,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7675,"src":"3225:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3209:19:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7705,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"3232:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3209:29:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7707,"nodeType":"ExpressionStatement","src":"3209:29:52"},{"expression":{"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7708,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"3252:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7711,"indexExpression":{"id":7709,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"3262:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3252:13:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7712,"indexExpression":{"id":7710,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7675,"src":"3266:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3252:17:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7713,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"3273:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3252:27:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7715,"nodeType":"ExpressionStatement","src":"3252:27:52"},{"id":7719,"nodeType":"UncheckedBlock","src":"3394:46:52","statements":[{"expression":{"id":7717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3422:3:52","subExpression":{"id":7716,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7681,"src":"3424:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7718,"nodeType":"ExpressionStatement","src":"3422:3:52"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7684,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7681,"src":"3118:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7685,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"3122:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3126:6:52","memberName":"length","nodeType":"MemberAccess","src":"3122:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3118:14:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7721,"initializationExpression":{"assignments":[7681],"declarations":[{"constant":false,"id":7681,"mutability":"mutable","name":"i","nameLocation":"3111:1:52","nodeType":"VariableDeclaration","scope":7721,"src":"3103:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7680,"name":"uint256","nodeType":"ElementaryTypeName","src":"3103:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7683,"initialValue":{"hexValue":"30","id":7682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3115:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3103:13:52"},"nodeType":"ForStatement","src":"3098:352:52"},{"eventCall":{"arguments":[{"expression":{"id":7723,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3479:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3483:6:52","memberName":"sender","nodeType":"MemberAccess","src":"3479:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7725,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"3491:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7726,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"3497:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7727,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"3501:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":7728,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7645,"src":"3506:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}],"id":7722,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7493,"src":"3465:13:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":7729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3465:49:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7730,"nodeType":"EmitStatement","src":"3460:54:52"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7732,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"3546:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3549:4:52","memberName":"code","nodeType":"MemberAccess","src":"3546:7:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3554:6:52","memberName":"length","nodeType":"MemberAccess","src":"3546:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3564:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3546:19:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":7747,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3667:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3671:6:52","memberName":"sender","nodeType":"MemberAccess","src":"3667:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7749,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"3679:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7750,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"3685:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":7751,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7645,"src":"3690:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":7752,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7647,"src":"3699:4:52","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":7744,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"3640:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7743,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"3619:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3619:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155TokenReceiver_$8143","typeString":"contract ERC1155TokenReceiver"}},"id":7746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3644:22:52","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"3619:47:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"}},"id":7753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3619:85:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":7754,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"3728:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3749:22:52","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"3728:43:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC1155TokenReceiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"}},"id":7756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3772:8:52","memberName":"selector","nodeType":"MemberAccess","src":"3728:52:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3619:161:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3546:234:52","trueExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7737,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"3584:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3598:1:52","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":7739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3590:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7738,"name":"address","nodeType":"ElementaryTypeName","src":"3590:7:52","typeDescriptions":{}}},"id":7741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3590:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3584:16:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":7759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3794:18:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":7731,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3525:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3525:297:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7761,"nodeType":"ExpressionStatement","src":"3525:297:52"}]},"functionSelector":"2eb2c2d6","id":7763,"implemented":true,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"2629:21:52","nodeType":"FunctionDefinition","parameters":{"id":7648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7637,"mutability":"mutable","name":"from","nameLocation":"2668:4:52","nodeType":"VariableDeclaration","scope":7763,"src":"2660:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7636,"name":"address","nodeType":"ElementaryTypeName","src":"2660:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7639,"mutability":"mutable","name":"to","nameLocation":"2690:2:52","nodeType":"VariableDeclaration","scope":7763,"src":"2682:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7638,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7642,"mutability":"mutable","name":"ids","nameLocation":"2721:3:52","nodeType":"VariableDeclaration","scope":7763,"src":"2702:22:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7640,"name":"uint256","nodeType":"ElementaryTypeName","src":"2702:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7641,"nodeType":"ArrayTypeName","src":"2702:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7645,"mutability":"mutable","name":"amounts","nameLocation":"2753:7:52","nodeType":"VariableDeclaration","scope":7763,"src":"2734:26:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7643,"name":"uint256","nodeType":"ElementaryTypeName","src":"2734:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7644,"nodeType":"ArrayTypeName","src":"2734:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7647,"mutability":"mutable","name":"data","nameLocation":"2785:4:52","nodeType":"VariableDeclaration","scope":7763,"src":"2770:19:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7646,"name":"bytes","nodeType":"ElementaryTypeName","src":"2770:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2650:145:52"},"returnParameters":{"id":7649,"nodeType":"ParameterList","parameters":[],"src":"2811:0:52"},"scope":8099,"src":"2620:1209:52","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7821,"nodeType":"Block","src":"4002:416:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7776,"name":"owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"4020:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4027:6:52","memberName":"length","nodeType":"MemberAccess","src":"4020:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7778,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7769,"src":"4037:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4041:6:52","memberName":"length","nodeType":"MemberAccess","src":"4037:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4020:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c454e4754485f4d49534d41544348","id":7781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4049:17:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""},"value":"LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""}],"id":7775,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4012:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4012:55:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7783,"nodeType":"ExpressionStatement","src":"4012:55:52"},{"expression":{"id":7791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7784,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"4078:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7788,"name":"owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"4103:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4110:6:52","memberName":"length","nodeType":"MemberAccess","src":"4103:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4089:13:52","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":7785,"name":"uint256","nodeType":"ElementaryTypeName","src":"4093:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7786,"nodeType":"ArrayTypeName","src":"4093:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":7790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4089:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"4078:39:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7792,"nodeType":"ExpressionStatement","src":"4078:39:52"},{"id":7820,"nodeType":"UncheckedBlock","src":"4259:153:52","statements":[{"body":{"id":7818,"nodeType":"Block","src":"4327:75:52","statements":[{"expression":{"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7804,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"4345:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7806,"indexExpression":{"id":7805,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"4354:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4345:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":7807,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"4359:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7811,"indexExpression":{"baseExpression":{"id":7808,"name":"owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"4369:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7810,"indexExpression":{"id":7809,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"4376:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4369:9:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4359:20:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7815,"indexExpression":{"baseExpression":{"id":7812,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7769,"src":"4380:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7814,"indexExpression":{"id":7813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"4384:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4380:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4359:28:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4345:42:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7817,"nodeType":"ExpressionStatement","src":"4345:42:52"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7797,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"4303:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7798,"name":"owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"4307:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4314:6:52","memberName":"length","nodeType":"MemberAccess","src":"4307:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4303:17:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7819,"initializationExpression":{"assignments":[7794],"declarations":[{"constant":false,"id":7794,"mutability":"mutable","name":"i","nameLocation":"4296:1:52","nodeType":"VariableDeclaration","scope":7819,"src":"4288:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7793,"name":"uint256","nodeType":"ElementaryTypeName","src":"4288:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7796,"initialValue":{"hexValue":"30","id":7795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4300:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4288:13:52"},"loopExpression":{"expression":{"id":7802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4322:3:52","subExpression":{"id":7801,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"4324:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7803,"nodeType":"ExpressionStatement","src":"4322:3:52"},"nodeType":"ForStatement","src":"4283:119:52"}]}]},"functionSelector":"4e1273f4","id":7822,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"3844:14:52","nodeType":"FunctionDefinition","parameters":{"id":7770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7766,"mutability":"mutable","name":"owners","nameLocation":"3878:6:52","nodeType":"VariableDeclaration","scope":7822,"src":"3859:25:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7764,"name":"address","nodeType":"ElementaryTypeName","src":"3859:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7765,"nodeType":"ArrayTypeName","src":"3859:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7769,"mutability":"mutable","name":"ids","nameLocation":"3905:3:52","nodeType":"VariableDeclaration","scope":7822,"src":"3886:22:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7767,"name":"uint256","nodeType":"ElementaryTypeName","src":"3886:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7768,"nodeType":"ArrayTypeName","src":"3886:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3858:51:52"},"returnParameters":{"id":7774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7773,"mutability":"mutable","name":"balances","nameLocation":"3988:8:52","nodeType":"VariableDeclaration","scope":7822,"src":"3971:25:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7771,"name":"uint256","nodeType":"ElementaryTypeName","src":"3971:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7772,"nodeType":"ArrayTypeName","src":"3971:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3970:27:52"},"scope":8099,"src":"3835:583:52","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":7841,"nodeType":"Block","src":"4688:258:52","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7829,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7824,"src":"4717:11:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031666663396137","id":7830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4732:10:52","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"src":"4717:25:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7832,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7824,"src":"4792:11:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30786439623637613236","id":7833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4807:10:52","typeDescriptions":{"typeIdentifier":"t_rational_3652614694_by_1","typeString":"int_const 3652614694"},"value":"0xd9b67a26"},"src":"4792:25:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4717:100:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7836,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7824,"src":"4868:11:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783065383933343163","id":7837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4883:10:52","typeDescriptions":{"typeIdentifier":"t_rational_243872796_by_1","typeString":"int_const 243872796"},"value":"0x0e89341c"},"src":"4868:25:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4717:176:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7828,"id":7840,"nodeType":"Return","src":"4698:195:52"}]},"functionSelector":"01ffc9a7","id":7842,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4615:17:52","nodeType":"FunctionDefinition","parameters":{"id":7825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7824,"mutability":"mutable","name":"interfaceId","nameLocation":"4640:11:52","nodeType":"VariableDeclaration","scope":7842,"src":"4633:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7823,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4633:6:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4632:20:52"},"returnParameters":{"id":7828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7842,"src":"4682:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7826,"name":"bool","nodeType":"ElementaryTypeName","src":"4682:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4681:6:52"},"scope":8099,"src":"4606:340:52","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":7907,"nodeType":"Block","src":"5269:416:52","statements":[{"expression":{"id":7859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7853,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"5279:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7856,"indexExpression":{"id":7854,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"5289:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5279:13:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7857,"indexExpression":{"id":7855,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7846,"src":"5293:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5279:17:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7858,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"5300:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5279:27:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7860,"nodeType":"ExpressionStatement","src":"5279:27:52"},{"eventCall":{"arguments":[{"expression":{"id":7862,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5337:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5341:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5337:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5357:1:52","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":7865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5349:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7864,"name":"address","nodeType":"ElementaryTypeName","src":"5349:7:52","typeDescriptions":{}}},"id":7867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5349:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7868,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"5361:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7869,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7846,"src":"5365:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7870,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"5369:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7861,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7479,"src":"5322:14:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":7871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:54:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7872,"nodeType":"EmitStatement","src":"5317:59:52"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7874,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"5408:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5411:4:52","memberName":"code","nodeType":"MemberAccess","src":"5408:7:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5416:6:52","memberName":"length","nodeType":"MemberAccess","src":"5408:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5426:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5408:19:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":7889,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5524:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5528:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5524:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5544:1:52","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":7892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5536:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7891,"name":"address","nodeType":"ElementaryTypeName","src":"5536:7:52","typeDescriptions":{}}},"id":7894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5536:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7895,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7846,"src":"5548:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7896,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"5552:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7897,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7850,"src":"5560:4:52","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"}],"expression":{"arguments":[{"id":7886,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"5502:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7885,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"5481:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155TokenReceiver_$8143","typeString":"contract ERC1155TokenReceiver"}},"id":7888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5506:17:52","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":8120,"src":"5481:42:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"}},"id":7898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:84:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":7899,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"5589:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5610:17:52","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":8120,"src":"5589:38:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC1155TokenReceiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"}},"id":7901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5628:8:52","memberName":"selector","nodeType":"MemberAccess","src":"5589:47:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5481:155:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5408:228:52","trueExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7879,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"5446:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5460:1:52","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":7881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5452:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7880,"name":"address","nodeType":"ElementaryTypeName","src":"5452:7:52","typeDescriptions":{}}},"id":7883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5452:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5446:16:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":7904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5650:18:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":7873,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5387:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5387:291:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7906,"nodeType":"ExpressionStatement","src":"5387:291:52"}]},"id":7908,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"5149:5:52","nodeType":"FunctionDefinition","parameters":{"id":7851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7844,"mutability":"mutable","name":"to","nameLocation":"5172:2:52","nodeType":"VariableDeclaration","scope":7908,"src":"5164:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7843,"name":"address","nodeType":"ElementaryTypeName","src":"5164:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7846,"mutability":"mutable","name":"id","nameLocation":"5192:2:52","nodeType":"VariableDeclaration","scope":7908,"src":"5184:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7845,"name":"uint256","nodeType":"ElementaryTypeName","src":"5184:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7848,"mutability":"mutable","name":"amount","nameLocation":"5212:6:52","nodeType":"VariableDeclaration","scope":7908,"src":"5204:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7847,"name":"uint256","nodeType":"ElementaryTypeName","src":"5204:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7850,"mutability":"mutable","name":"data","nameLocation":"5241:4:52","nodeType":"VariableDeclaration","scope":7908,"src":"5228:17:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7849,"name":"bytes","nodeType":"ElementaryTypeName","src":"5228:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5154:97:52"},"returnParameters":{"id":7852,"nodeType":"ParameterList","parameters":[],"src":"5269:0:52"},"scope":8099,"src":"5140:545:52","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8005,"nodeType":"Block","src":"5845:782:52","statements":[{"assignments":[7922],"declarations":[{"constant":false,"id":7922,"mutability":"mutable","name":"idsLength","nameLocation":"5863:9:52","nodeType":"VariableDeclaration","scope":8005,"src":"5855:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7921,"name":"uint256","nodeType":"ElementaryTypeName","src":"5855:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7925,"initialValue":{"expression":{"id":7923,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7913,"src":"5875:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5879:6:52","memberName":"length","nodeType":"MemberAccess","src":"5875:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5855:30:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7927,"name":"idsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7922,"src":"5921:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7928,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7916,"src":"5934:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5942:6:52","memberName":"length","nodeType":"MemberAccess","src":"5934:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5921:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c454e4754485f4d49534d41544348","id":7931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5950:17:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""},"value":"LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""}],"id":7926,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5913:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5913:55:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7933,"nodeType":"ExpressionStatement","src":"5913:55:52"},{"body":{"id":7957,"nodeType":"Block","src":"6016:220:52","statements":[{"expression":{"id":7951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7941,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"6030:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":7946,"indexExpression":{"id":7942,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"6040:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6030:13:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":7947,"indexExpression":{"baseExpression":{"id":7943,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7913,"src":"6044:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7945,"indexExpression":{"id":7944,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"6048:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6044:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6030:21:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":7948,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7916,"src":"6055:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7950,"indexExpression":{"id":7949,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"6063:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6055:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6030:35:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7952,"nodeType":"ExpressionStatement","src":"6030:35:52"},{"id":7956,"nodeType":"UncheckedBlock","src":"6180:46:52","statements":[{"expression":{"id":7954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6208:3:52","subExpression":{"id":7953,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"6210:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7955,"nodeType":"ExpressionStatement","src":"6208:3:52"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7938,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"5999:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7939,"name":"idsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7922,"src":"6003:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5999:13:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7958,"initializationExpression":{"assignments":[7935],"declarations":[{"constant":false,"id":7935,"mutability":"mutable","name":"i","nameLocation":"5992:1:52","nodeType":"VariableDeclaration","scope":7958,"src":"5984:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7934,"name":"uint256","nodeType":"ElementaryTypeName","src":"5984:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7937,"initialValue":{"hexValue":"30","id":7936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5996:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5984:13:52"},"nodeType":"ForStatement","src":"5979:257:52"},{"eventCall":{"arguments":[{"expression":{"id":7960,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6265:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6269:6:52","memberName":"sender","nodeType":"MemberAccess","src":"6265:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6285:1:52","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":7963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6277:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7962,"name":"address","nodeType":"ElementaryTypeName","src":"6277:7:52","typeDescriptions":{}}},"id":7965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6277:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7966,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"6289:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7967,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7913,"src":"6293:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":7968,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7916,"src":"6298:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":7959,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7493,"src":"6251:13:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":7969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6251:55:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7970,"nodeType":"EmitStatement","src":"6246:60:52"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7972,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"6338:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6341:4:52","memberName":"code","nodeType":"MemberAccess","src":"6338:7:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6346:6:52","memberName":"length","nodeType":"MemberAccess","src":"6338:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6356:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6338:19:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":7987,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6459:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6463:6:52","memberName":"sender","nodeType":"MemberAccess","src":"6459:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6479:1:52","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":7990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6471:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7989,"name":"address","nodeType":"ElementaryTypeName","src":"6471:7:52","typeDescriptions":{}}},"id":7992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6471:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7993,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7913,"src":"6483:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":7994,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7916,"src":"6488:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":7995,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7918,"src":"6497:4:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":7984,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"6432:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7983,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"6411:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6411:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1155TokenReceiver_$8143","typeString":"contract ERC1155TokenReceiver"}},"id":7986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6436:22:52","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"6411:47:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"}},"id":7996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6411:91:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":7997,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"6526:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":7998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6547:22:52","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"6526:43:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC1155TokenReceiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"}},"id":7999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6570:8:52","memberName":"selector","nodeType":"MemberAccess","src":"6526:52:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6411:167:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6338:240:52","trueExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7977,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"6376:2:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6390:1:52","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":7979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6382:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7978,"name":"address","nodeType":"ElementaryTypeName","src":"6382:7:52","typeDescriptions":{}}},"id":7981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6382:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6376:16:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":8002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6592:18:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":7971,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6317:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6317:303:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8004,"nodeType":"ExpressionStatement","src":"6317:303:52"}]},"id":8006,"implemented":true,"kind":"function","modifiers":[],"name":"_batchMint","nameLocation":"5700:10:52","nodeType":"FunctionDefinition","parameters":{"id":7919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7910,"mutability":"mutable","name":"to","nameLocation":"5728:2:52","nodeType":"VariableDeclaration","scope":8006,"src":"5720:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7909,"name":"address","nodeType":"ElementaryTypeName","src":"5720:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7913,"mutability":"mutable","name":"ids","nameLocation":"5757:3:52","nodeType":"VariableDeclaration","scope":8006,"src":"5740:20:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7911,"name":"uint256","nodeType":"ElementaryTypeName","src":"5740:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7912,"nodeType":"ArrayTypeName","src":"5740:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7916,"mutability":"mutable","name":"amounts","nameLocation":"5787:7:52","nodeType":"VariableDeclaration","scope":8006,"src":"5770:24:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7914,"name":"uint256","nodeType":"ElementaryTypeName","src":"5770:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7915,"nodeType":"ArrayTypeName","src":"5770:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7918,"mutability":"mutable","name":"data","nameLocation":"5817:4:52","nodeType":"VariableDeclaration","scope":8006,"src":"5804:17:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7917,"name":"bytes","nodeType":"ElementaryTypeName","src":"5804:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5710:117:52"},"returnParameters":{"id":7920,"nodeType":"ParameterList","parameters":[],"src":"5845:0:52"},"scope":8099,"src":"5691:936:52","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8067,"nodeType":"Block","src":"6762:472:52","statements":[{"assignments":[8018],"declarations":[{"constant":false,"id":8018,"mutability":"mutable","name":"idsLength","nameLocation":"6780:9:52","nodeType":"VariableDeclaration","scope":8067,"src":"6772:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8017,"name":"uint256","nodeType":"ElementaryTypeName","src":"6772:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8021,"initialValue":{"expression":{"id":8019,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"6792:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6796:6:52","memberName":"length","nodeType":"MemberAccess","src":"6792:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6772:30:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8023,"name":"idsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"6838:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8024,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"6851:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6859:6:52","memberName":"length","nodeType":"MemberAccess","src":"6851:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6838:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c454e4754485f4d49534d41544348","id":8027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6867:17:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""},"value":"LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c58dd6910b3d398979b9081d1d6e7a265ec7a7fb91e9e38230c02220af4c5217","typeString":"literal_string \"LENGTH_MISMATCH\""}],"id":8022,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6830:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6830:55:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8029,"nodeType":"ExpressionStatement","src":"6830:55:52"},{"body":{"id":8053,"nodeType":"Block","src":"6933:222:52","statements":[{"expression":{"id":8047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8037,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"6947:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":8042,"indexExpression":{"id":8038,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"6957:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6947:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":8043,"indexExpression":{"baseExpression":{"id":8039,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"6963:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8041,"indexExpression":{"id":8040,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8031,"src":"6967:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6963:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6947:23:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"baseExpression":{"id":8044,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"6974:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8046,"indexExpression":{"id":8045,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8031,"src":"6982:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6974:10:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6947:37:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8048,"nodeType":"ExpressionStatement","src":"6947:37:52"},{"id":8052,"nodeType":"UncheckedBlock","src":"7099:46:52","statements":[{"expression":{"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7127:3:52","subExpression":{"id":8049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8031,"src":"7129:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8051,"nodeType":"ExpressionStatement","src":"7127:3:52"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8034,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8031,"src":"6916:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8035,"name":"idsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"6920:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6916:13:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8054,"initializationExpression":{"assignments":[8031],"declarations":[{"constant":false,"id":8031,"mutability":"mutable","name":"i","nameLocation":"6909:1:52","nodeType":"VariableDeclaration","scope":8054,"src":"6901:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8030,"name":"uint256","nodeType":"ElementaryTypeName","src":"6901:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8033,"initialValue":{"hexValue":"30","id":8032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6913:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6901:13:52"},"nodeType":"ForStatement","src":"6896:259:52"},{"eventCall":{"arguments":[{"expression":{"id":8056,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7184:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7188:6:52","memberName":"sender","nodeType":"MemberAccess","src":"7184:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8058,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"7196:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7210:1:52","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":8060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7202:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8059,"name":"address","nodeType":"ElementaryTypeName","src":"7202:7:52","typeDescriptions":{}}},"id":8062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7202:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8063,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"7214:3:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8064,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"7219:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":8055,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7493,"src":"7170:13:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":8065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7170:57:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8066,"nodeType":"EmitStatement","src":"7165:62:52"}]},"id":8068,"implemented":true,"kind":"function","modifiers":[],"name":"_batchBurn","nameLocation":"6642:10:52","nodeType":"FunctionDefinition","parameters":{"id":8015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8008,"mutability":"mutable","name":"from","nameLocation":"6670:4:52","nodeType":"VariableDeclaration","scope":8068,"src":"6662:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8007,"name":"address","nodeType":"ElementaryTypeName","src":"6662:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8011,"mutability":"mutable","name":"ids","nameLocation":"6701:3:52","nodeType":"VariableDeclaration","scope":8068,"src":"6684:20:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8009,"name":"uint256","nodeType":"ElementaryTypeName","src":"6684:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8010,"nodeType":"ArrayTypeName","src":"6684:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8014,"mutability":"mutable","name":"amounts","nameLocation":"6731:7:52","nodeType":"VariableDeclaration","scope":8068,"src":"6714:24:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8012,"name":"uint256","nodeType":"ElementaryTypeName","src":"6714:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8013,"nodeType":"ArrayTypeName","src":"6714:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6652:92:52"},"returnParameters":{"id":8016,"nodeType":"ParameterList","parameters":[],"src":"6762:0:52"},"scope":8099,"src":"6633:601:52","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8097,"nodeType":"Block","src":"7344:118:52","statements":[{"expression":{"id":8083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8077,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"7354:9:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":8080,"indexExpression":{"id":8078,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"7364:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7354:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":8081,"indexExpression":{"id":8079,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8072,"src":"7370:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7354:19:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8082,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8074,"src":"7377:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7354:29:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8084,"nodeType":"ExpressionStatement","src":"7354:29:52"},{"eventCall":{"arguments":[{"expression":{"id":8086,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7414:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7418:6:52","memberName":"sender","nodeType":"MemberAccess","src":"7414:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8088,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"7426:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7440:1:52","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":8090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7432:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8089,"name":"address","nodeType":"ElementaryTypeName","src":"7432:7:52","typeDescriptions":{}}},"id":8092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7432:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8093,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8072,"src":"7444:2:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8094,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8074,"src":"7448:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8085,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7479,"src":"7399:14:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":8095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7399:56:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8096,"nodeType":"EmitStatement","src":"7394:61:52"}]},"id":8098,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7249:5:52","nodeType":"FunctionDefinition","parameters":{"id":8075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8070,"mutability":"mutable","name":"from","nameLocation":"7272:4:52","nodeType":"VariableDeclaration","scope":8098,"src":"7264:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8069,"name":"address","nodeType":"ElementaryTypeName","src":"7264:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8072,"mutability":"mutable","name":"id","nameLocation":"7294:2:52","nodeType":"VariableDeclaration","scope":8098,"src":"7286:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8071,"name":"uint256","nodeType":"ElementaryTypeName","src":"7286:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8074,"mutability":"mutable","name":"amount","nameLocation":"7314:6:52","nodeType":"VariableDeclaration","scope":8098,"src":"7306:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8073,"name":"uint256","nodeType":"ElementaryTypeName","src":"7306:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7254:72:52"},"returnParameters":{"id":8076,"nodeType":"ParameterList","parameters":[],"src":"7344:0:52"},"scope":8099,"src":"7240:222:52","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":8144,"src":"240:7224:52","usedErrors":[]},{"abstract":true,"baseContracts":[],"canonicalName":"ERC1155TokenReceiver","contractDependencies":[],"contractKind":"contract","documentation":{"id":8100,"nodeType":"StructuredDocumentation","src":"7466:184:52","text":"@notice A generic interface for a contract which properly accepts ERC1155 tokens.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)"},"fullyImplemented":true,"id":8143,"linearizedBaseContracts":[8143],"name":"ERC1155TokenReceiver","nameLocation":"7668:20:52","nodeType":"ContractDefinition","nodes":[{"body":{"id":8119,"nodeType":"Block","src":"7854:71:52","statements":[{"expression":{"expression":{"expression":{"id":8115,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"7871:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":8116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7892:17:52","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":8120,"src":"7871:38:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC1155TokenReceiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"}},"id":8117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7910:8:52","memberName":"selector","nodeType":"MemberAccess","src":"7871:47:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":8114,"id":8118,"nodeType":"Return","src":"7864:54:52"}]},"functionSelector":"f23a6e61","id":8120,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"7704:17:52","nodeType":"FunctionDefinition","parameters":{"id":8111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8120,"src":"7731:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8101,"name":"address","nodeType":"ElementaryTypeName","src":"7731:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8120,"src":"7748:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8103,"name":"address","nodeType":"ElementaryTypeName","src":"7748:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8120,"src":"7765:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8105,"name":"uint256","nodeType":"ElementaryTypeName","src":"7765:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8120,"src":"7782:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8107,"name":"uint256","nodeType":"ElementaryTypeName","src":"7782:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8120,"src":"7799:14:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8109,"name":"bytes","nodeType":"ElementaryTypeName","src":"7799:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7721:98:52"},"returnParameters":{"id":8114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8113,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8120,"src":"7846:6:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8112,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7846:6:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7845:8:52"},"scope":8143,"src":"7695:230:52","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":8141,"nodeType":"Block","src":"8117:76:52","statements":[{"expression":{"expression":{"expression":{"id":8137,"name":"ERC1155TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"8134:20:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155TokenReceiver_$8143_$","typeString":"type(contract ERC1155TokenReceiver)"}},"id":8138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8155:22:52","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"8134:43:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC1155TokenReceiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"}},"id":8139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8178:8:52","memberName":"selector","nodeType":"MemberAccess","src":"8134:52:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":8136,"id":8140,"nodeType":"Return","src":"8127:59:52"}]},"functionSelector":"bc197c81","id":8142,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"7940:22:52","nodeType":"FunctionDefinition","parameters":{"id":8133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8142,"src":"7972:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8121,"name":"address","nodeType":"ElementaryTypeName","src":"7972:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8142,"src":"7989:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8123,"name":"address","nodeType":"ElementaryTypeName","src":"7989:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8142,"src":"8006:18:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8125,"name":"uint256","nodeType":"ElementaryTypeName","src":"8006:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8126,"nodeType":"ArrayTypeName","src":"8006:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8142,"src":"8034:18:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8128,"name":"uint256","nodeType":"ElementaryTypeName","src":"8034:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8129,"nodeType":"ArrayTypeName","src":"8034:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8142,"src":"8062:14:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8131,"name":"bytes","nodeType":"ElementaryTypeName","src":"8062:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7962:120:52"},"returnParameters":{"id":8136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8135,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8142,"src":"8109:6:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8134,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8109:6:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"8108:8:52"},"scope":8143,"src":"7931:262:52","stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"scope":8144,"src":"7650:545:52","usedErrors":[]}],"src":"42:8154:52"},"id":52},"solmate/src/tokens/ERC20.sol":{"ast":{"absolutePath":"solmate/src/tokens/ERC20.sol","exportedSymbols":{"ERC20":[8531]},"id":8532,"license":"AGPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":8145,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"42:24:53"},{"abstract":true,"baseContracts":[],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":8146,"nodeType":"StructuredDocumentation","src":"68:406:53","text":"@notice Modern and gas efficient ERC20 + EIP-2612 implementation.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)\n @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)\n @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it."},"fullyImplemented":true,"id":8531,"linearizedBaseContracts":[8531],"name":"ERC20","nameLocation":"492:5:53","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":8154,"name":"Transfer","nameLocation":"689:8:53","nodeType":"EventDefinition","parameters":{"id":8153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8148,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"714:4:53","nodeType":"VariableDeclaration","scope":8154,"src":"698:20:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8147,"name":"address","nodeType":"ElementaryTypeName","src":"698:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8150,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"736:2:53","nodeType":"VariableDeclaration","scope":8154,"src":"720:18:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8149,"name":"address","nodeType":"ElementaryTypeName","src":"720:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8152,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"748:6:53","nodeType":"VariableDeclaration","scope":8154,"src":"740:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8151,"name":"uint256","nodeType":"ElementaryTypeName","src":"740:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"697:58:53"},"src":"683:73:53"},{"anonymous":false,"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":8162,"name":"Approval","nameLocation":"768:8:53","nodeType":"EventDefinition","parameters":{"id":8161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8156,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"793:5:53","nodeType":"VariableDeclaration","scope":8162,"src":"777:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8155,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8158,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"816:7:53","nodeType":"VariableDeclaration","scope":8162,"src":"800:23:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8157,"name":"address","nodeType":"ElementaryTypeName","src":"800:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8160,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"833:6:53","nodeType":"VariableDeclaration","scope":8162,"src":"825:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8159,"name":"uint256","nodeType":"ElementaryTypeName","src":"825:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"776:64:53"},"src":"762:79:53"},{"constant":false,"functionSelector":"06fdde03","id":8164,"mutability":"mutable","name":"name","nameLocation":"1045:4:53","nodeType":"VariableDeclaration","scope":8531,"src":"1031:18:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8163,"name":"string","nodeType":"ElementaryTypeName","src":"1031:6:53","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":8166,"mutability":"mutable","name":"symbol","nameLocation":"1070:6:53","nodeType":"VariableDeclaration","scope":8531,"src":"1056:20:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8165,"name":"string","nodeType":"ElementaryTypeName","src":"1056:6:53","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"functionSelector":"313ce567","id":8168,"mutability":"immutable","name":"decimals","nameLocation":"1106:8:53","nodeType":"VariableDeclaration","scope":8531,"src":"1083:31:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8167,"name":"uint8","nodeType":"ElementaryTypeName","src":"1083:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":false,"functionSelector":"18160ddd","id":8170,"mutability":"mutable","name":"totalSupply","nameLocation":"1319:11:53","nodeType":"VariableDeclaration","scope":8531,"src":"1304:26:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8169,"name":"uint256","nodeType":"ElementaryTypeName","src":"1304:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":8174,"mutability":"mutable","name":"balanceOf","nameLocation":"1372:9:53","nodeType":"VariableDeclaration","scope":8531,"src":"1337:44:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8173,"keyType":{"id":8171,"name":"address","nodeType":"ElementaryTypeName","src":"1345:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1337:27:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"functionSelector":"dd62ed3e","id":8180,"mutability":"mutable","name":"allowance","nameLocation":"1443:9:53","nodeType":"VariableDeclaration","scope":8531,"src":"1388:64:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8179,"keyType":{"id":8175,"name":"address","nodeType":"ElementaryTypeName","src":"1396:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1388:47:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":8178,"keyType":{"id":8176,"name":"address","nodeType":"ElementaryTypeName","src":"1415:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1407:27:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1426:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"constant":false,"id":8182,"mutability":"immutable","name":"INITIAL_CHAIN_ID","nameLocation":"1670:16:53","nodeType":"VariableDeclaration","scope":8531,"src":"1643:43:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1643:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8184,"mutability":"immutable","name":"INITIAL_DOMAIN_SEPARATOR","nameLocation":"1720:24:53","nodeType":"VariableDeclaration","scope":8531,"src":"1693:51:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8183,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1693:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"functionSelector":"7ecebe00","id":8188,"mutability":"mutable","name":"nonces","nameLocation":"1786:6:53","nodeType":"VariableDeclaration","scope":8531,"src":"1751:41:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8187,"keyType":{"id":8185,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1751:27:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8186,"name":"uint256","nodeType":"ElementaryTypeName","src":"1770:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"body":{"id":8219,"nodeType":"Block","src":"2084:189:53","statements":[{"expression":{"id":8199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8197,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8164,"src":"2094:4:53","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8198,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8190,"src":"2101:5:53","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2094:12:53","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8200,"nodeType":"ExpressionStatement","src":"2094:12:53"},{"expression":{"id":8203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8201,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8166,"src":"2116:6:53","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8202,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8192,"src":"2125:7:53","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2116:16:53","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8204,"nodeType":"ExpressionStatement","src":"2116:16:53"},{"expression":{"id":8207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8205,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8168,"src":"2142:8:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8206,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8194,"src":"2153:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2142:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":8208,"nodeType":"ExpressionStatement","src":"2142:20:53"},{"expression":{"id":8212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8209,"name":"INITIAL_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"2173:16:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8210,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2192:5:53","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2198:7:53","memberName":"chainid","nodeType":"MemberAccess","src":"2192:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2173:32:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8213,"nodeType":"ExpressionStatement","src":"2173:32:53"},{"expression":{"id":8217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8214,"name":"INITIAL_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8184,"src":"2215:24:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":8215,"name":"computeDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"2242:22:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":8216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2242:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2215:51:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8218,"nodeType":"ExpressionStatement","src":"2215:51:53"}]},"id":8220,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8190,"mutability":"mutable","name":"_name","nameLocation":"2016:5:53","nodeType":"VariableDeclaration","scope":8220,"src":"2002:19:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8189,"name":"string","nodeType":"ElementaryTypeName","src":"2002:6:53","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8192,"mutability":"mutable","name":"_symbol","nameLocation":"2045:7:53","nodeType":"VariableDeclaration","scope":8220,"src":"2031:21:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8191,"name":"string","nodeType":"ElementaryTypeName","src":"2031:6:53","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8194,"mutability":"mutable","name":"_decimals","nameLocation":"2068:9:53","nodeType":"VariableDeclaration","scope":8220,"src":"2062:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8193,"name":"uint8","nodeType":"ElementaryTypeName","src":"2062:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1992:91:53"},"returnParameters":{"id":8196,"nodeType":"ParameterList","parameters":[],"src":"2084:0:53"},"scope":8531,"src":"1981:292:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8247,"nodeType":"Block","src":"2541:131:53","statements":[{"expression":{"id":8236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8229,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"2551:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8233,"indexExpression":{"expression":{"id":8230,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2561:3:53","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2565:6:53","memberName":"sender","nodeType":"MemberAccess","src":"2561:10:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2551:21:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8234,"indexExpression":{"id":8232,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8222,"src":"2573:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2551:30:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8235,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8224,"src":"2584:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:39:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8237,"nodeType":"ExpressionStatement","src":"2551:39:53"},{"eventCall":{"arguments":[{"expression":{"id":8239,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2615:3:53","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2619:6:53","memberName":"sender","nodeType":"MemberAccess","src":"2615:10:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8241,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8222,"src":"2627:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8242,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8224,"src":"2636:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8238,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"2606:8:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2606:37:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8244,"nodeType":"EmitStatement","src":"2601:42:53"},{"expression":{"hexValue":"74727565","id":8245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2661:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8228,"id":8246,"nodeType":"Return","src":"2654:11:53"}]},"functionSelector":"095ea7b3","id":8248,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2470:7:53","nodeType":"FunctionDefinition","parameters":{"id":8225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8222,"mutability":"mutable","name":"spender","nameLocation":"2486:7:53","nodeType":"VariableDeclaration","scope":8248,"src":"2478:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8221,"name":"address","nodeType":"ElementaryTypeName","src":"2478:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8224,"mutability":"mutable","name":"amount","nameLocation":"2503:6:53","nodeType":"VariableDeclaration","scope":8248,"src":"2495:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8223,"name":"uint256","nodeType":"ElementaryTypeName","src":"2495:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2477:33:53"},"returnParameters":{"id":8228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8248,"src":"2535:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8226,"name":"bool","nodeType":"ElementaryTypeName","src":"2535:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2534:6:53"},"scope":8531,"src":"2461:211:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8280,"nodeType":"Block","src":"2754:297:53","statements":[{"expression":{"id":8262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8257,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"2764:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8260,"indexExpression":{"expression":{"id":8258,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2774:3:53","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2778:6:53","memberName":"sender","nodeType":"MemberAccess","src":"2774:10:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2764:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8261,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8252,"src":"2789:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2764:31:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8263,"nodeType":"ExpressionStatement","src":"2764:31:53"},{"id":8270,"nodeType":"UncheckedBlock","src":"2917:58:53","statements":[{"expression":{"id":8268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8264,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"2941:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8266,"indexExpression":{"id":8265,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"2951:2:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2941:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8267,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8252,"src":"2958:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2941:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8269,"nodeType":"ExpressionStatement","src":"2941:23:53"}]},{"eventCall":{"arguments":[{"expression":{"id":8272,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2999:3:53","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3003:6:53","memberName":"sender","nodeType":"MemberAccess","src":"2999:10:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8274,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"3011:2:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8275,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8252,"src":"3015:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8271,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8154,"src":"2990:8:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2990:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8277,"nodeType":"EmitStatement","src":"2985:37:53"},{"expression":{"hexValue":"74727565","id":8278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3040:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8256,"id":8279,"nodeType":"Return","src":"3033:11:53"}]},"functionSelector":"a9059cbb","id":8281,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"2687:8:53","nodeType":"FunctionDefinition","parameters":{"id":8253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8250,"mutability":"mutable","name":"to","nameLocation":"2704:2:53","nodeType":"VariableDeclaration","scope":8281,"src":"2696:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8249,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8252,"mutability":"mutable","name":"amount","nameLocation":"2716:6:53","nodeType":"VariableDeclaration","scope":8281,"src":"2708:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8251,"name":"uint256","nodeType":"ElementaryTypeName","src":"2708:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2695:28:53"},"returnParameters":{"id":8256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8281,"src":"2748:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8254,"name":"bool","nodeType":"ElementaryTypeName","src":"2748:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2747:6:53"},"scope":8531,"src":"2678:373:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8341,"nodeType":"Block","src":"3181:468:53","statements":[{"assignments":[8293],"declarations":[{"constant":false,"id":8293,"mutability":"mutable","name":"allowed","nameLocation":"3199:7:53","nodeType":"VariableDeclaration","scope":8341,"src":"3191:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8292,"name":"uint256","nodeType":"ElementaryTypeName","src":"3191:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8300,"initialValue":{"baseExpression":{"baseExpression":{"id":8294,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"3209:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8296,"indexExpression":{"id":8295,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8283,"src":"3219:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3209:15:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8299,"indexExpression":{"expression":{"id":8297,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3225:3:53","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3229:6:53","memberName":"sender","nodeType":"MemberAccess","src":"3225:10:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3209:27:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3191:45:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8301,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"3287:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":8304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3303:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8303,"name":"uint256","nodeType":"ElementaryTypeName","src":"3303:7:53","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8302,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3298:4:53","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3298:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3312:3:53","memberName":"max","nodeType":"MemberAccess","src":"3298:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3287:28:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8319,"nodeType":"IfStatement","src":"3283:80:53","trueBody":{"expression":{"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8308,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"3317:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8312,"indexExpression":{"id":8309,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8283,"src":"3327:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3317:15:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8313,"indexExpression":{"expression":{"id":8310,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3333:3:53","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3337:6:53","memberName":"sender","nodeType":"MemberAccess","src":"3333:10:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3317:27:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8314,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"3347:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8315,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8287,"src":"3357:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3347:16:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3317:46:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8318,"nodeType":"ExpressionStatement","src":"3317:46:53"}},{"expression":{"id":8324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8320,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"3374:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8322,"indexExpression":{"id":8321,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8283,"src":"3384:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3374:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8323,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8287,"src":"3393:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3374:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8325,"nodeType":"ExpressionStatement","src":"3374:25:53"},{"id":8332,"nodeType":"UncheckedBlock","src":"3521:58:53","statements":[{"expression":{"id":8330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8326,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"3545:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8328,"indexExpression":{"id":8327,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8285,"src":"3555:2:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3545:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8329,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8287,"src":"3562:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3545:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8331,"nodeType":"ExpressionStatement","src":"3545:23:53"}]},{"eventCall":{"arguments":[{"id":8334,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8283,"src":"3603:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8335,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8285,"src":"3609:2:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8336,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8287,"src":"3613:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8333,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8154,"src":"3594:8:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8338,"nodeType":"EmitStatement","src":"3589:31:53"},{"expression":{"hexValue":"74727565","id":8339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3638:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8291,"id":8340,"nodeType":"Return","src":"3631:11:53"}]},"functionSelector":"23b872dd","id":8342,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3066:12:53","nodeType":"FunctionDefinition","parameters":{"id":8288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8283,"mutability":"mutable","name":"from","nameLocation":"3096:4:53","nodeType":"VariableDeclaration","scope":8342,"src":"3088:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8282,"name":"address","nodeType":"ElementaryTypeName","src":"3088:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8285,"mutability":"mutable","name":"to","nameLocation":"3118:2:53","nodeType":"VariableDeclaration","scope":8342,"src":"3110:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8284,"name":"address","nodeType":"ElementaryTypeName","src":"3110:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8287,"mutability":"mutable","name":"amount","nameLocation":"3138:6:53","nodeType":"VariableDeclaration","scope":8342,"src":"3130:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8286,"name":"uint256","nodeType":"ElementaryTypeName","src":"3130:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3078:72:53"},"returnParameters":{"id":8291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8342,"src":"3175:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8289,"name":"bool","nodeType":"ElementaryTypeName","src":"3175:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3174:6:53"},"scope":8531,"src":"3057:592:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8428,"nodeType":"Block","src":"4027:1294:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8360,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4045:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":8361,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4057:5:53","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4063:9:53","memberName":"timestamp","nodeType":"MemberAccess","src":"4057:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4045:27:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5045524d49545f444541444c494e455f45585049524544","id":8364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4074:25:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e","typeString":"literal_string \"PERMIT_DEADLINE_EXPIRED\""},"value":"PERMIT_DEADLINE_EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e","typeString":"literal_string \"PERMIT_DEADLINE_EXPIRED\""}],"id":8359,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4037:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:63:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8366,"nodeType":"ExpressionStatement","src":"4037:63:53"},{"id":8421,"nodeType":"UncheckedBlock","src":"4241:1027:53","statements":[{"assignments":[8368],"declarations":[{"constant":false,"id":8368,"mutability":"mutable","name":"recoveredAddress","nameLocation":"4273:16:53","nodeType":"VariableDeclaration","scope":8421,"src":"4265:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8367,"name":"address","nodeType":"ElementaryTypeName","src":"4265:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8398,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"1901","id":8373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4392:10:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":8374,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8444,"src":"4428:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4428:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":8380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4602:84:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":8379,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4555:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4555:165:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8382,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"4754:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8383,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8346,"src":"4793:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8384,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"4834:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4873:15:53","subExpression":{"baseExpression":{"id":8385,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8188,"src":"4873:6:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8387,"indexExpression":{"id":8386,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"4880:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4873:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8389,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4922:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8377,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4511:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4515:6:53","memberName":"encode","nodeType":"MemberAccess","src":"4511:10:53","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4511:449:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8376,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4472:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4472:514:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8371,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4350:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4354:12:53","memberName":"encodePacked","nodeType":"MemberAccess","src":"4350:16:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4350:658:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8370,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4319:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:707:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8394,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8352,"src":"5044:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8395,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8354,"src":"5063:1:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8396,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8356,"src":"5082:1:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8369,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"4292:9:53","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:805:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4265:832:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8400,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"5120:16:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5148:1:53","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":8402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5140:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8401,"name":"address","nodeType":"ElementaryTypeName","src":"5140:7:53","typeDescriptions":{}}},"id":8404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5120:30:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8406,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"5154:16:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8407,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"5174:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5154:25:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5120:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f5349474e4552","id":8410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5181:16:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c","typeString":"literal_string \"INVALID_SIGNER\""},"value":"INVALID_SIGNER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c","typeString":"literal_string \"INVALID_SIGNER\""}],"id":8399,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5112:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:86:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8412,"nodeType":"ExpressionStatement","src":"5112:86:53"},{"expression":{"id":8419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8413,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"5213:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8416,"indexExpression":{"id":8414,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"5223:16:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5213:27:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8417,"indexExpression":{"id":8415,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8346,"src":"5241:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5213:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8418,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"5252:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5213:44:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8420,"nodeType":"ExpressionStatement","src":"5213:44:53"}]},{"eventCall":{"arguments":[{"id":8423,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"5292:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8424,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8346,"src":"5299:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"5308:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8422,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8162,"src":"5283:8:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5283:31:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8427,"nodeType":"EmitStatement","src":"5278:36:53"}]},"functionSelector":"d505accf","id":8429,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nameLocation":"3847:6:53","nodeType":"FunctionDefinition","parameters":{"id":8357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8344,"mutability":"mutable","name":"owner","nameLocation":"3871:5:53","nodeType":"VariableDeclaration","scope":8429,"src":"3863:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8343,"name":"address","nodeType":"ElementaryTypeName","src":"3863:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8346,"mutability":"mutable","name":"spender","nameLocation":"3894:7:53","nodeType":"VariableDeclaration","scope":8429,"src":"3886:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8345,"name":"address","nodeType":"ElementaryTypeName","src":"3886:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8348,"mutability":"mutable","name":"value","nameLocation":"3919:5:53","nodeType":"VariableDeclaration","scope":8429,"src":"3911:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8347,"name":"uint256","nodeType":"ElementaryTypeName","src":"3911:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8350,"mutability":"mutable","name":"deadline","nameLocation":"3942:8:53","nodeType":"VariableDeclaration","scope":8429,"src":"3934:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8349,"name":"uint256","nodeType":"ElementaryTypeName","src":"3934:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8352,"mutability":"mutable","name":"v","nameLocation":"3966:1:53","nodeType":"VariableDeclaration","scope":8429,"src":"3960:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8351,"name":"uint8","nodeType":"ElementaryTypeName","src":"3960:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":8354,"mutability":"mutable","name":"r","nameLocation":"3985:1:53","nodeType":"VariableDeclaration","scope":8429,"src":"3977:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3977:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8356,"mutability":"mutable","name":"s","nameLocation":"4004:1:53","nodeType":"VariableDeclaration","scope":8429,"src":"3996:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3996:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3853:158:53"},"returnParameters":{"id":8358,"nodeType":"ParameterList","parameters":[],"src":"4027:0:53"},"scope":8531,"src":"3838:1483:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8443,"nodeType":"Block","src":"5393:111:53","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8434,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5410:5:53","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5416:7:53","memberName":"chainid","nodeType":"MemberAccess","src":"5410:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8436,"name":"INITIAL_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"5427:16:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5410:33:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8439,"name":"computeDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"5473:22:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":8440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5473:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5410:87:53","trueExpression":{"id":8438,"name":"INITIAL_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8184,"src":"5446:24:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8433,"id":8442,"nodeType":"Return","src":"5403:94:53"}]},"functionSelector":"3644e515","id":8444,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"5336:16:53","nodeType":"FunctionDefinition","parameters":{"id":8430,"nodeType":"ParameterList","parameters":[],"src":"5352:2:53"},"returnParameters":{"id":8433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8432,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8444,"src":"5384:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8431,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5384:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5383:9:53"},"scope":8531,"src":"5327:177:53","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8473,"nodeType":"Block","src":"5584:372:53","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":8453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5682:84:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":8452,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5672:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5672:95:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":8458,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8164,"src":"5805:4:53","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":8457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5799:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8456,"name":"bytes","nodeType":"ElementaryTypeName","src":"5799:5:53","typeDescriptions":{}}},"id":8459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5799:11:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}],"id":8455,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5789:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"31","id":8462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5843:3:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":8461,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5833:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5833:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":8464,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5869:5:53","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5875:7:53","memberName":"chainid","nodeType":"MemberAccess","src":"5869:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":8468,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5912:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}],"id":8467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5904:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8466,"name":"address","nodeType":"ElementaryTypeName","src":"5904:7:53","typeDescriptions":{}}},"id":8469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5904:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8450,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5640:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5644:6:53","memberName":"encode","nodeType":"MemberAccess","src":"5640:10:53","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5640:295:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8449,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5613:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:336:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8448,"id":8472,"nodeType":"Return","src":"5594:355:53"}]},"id":8474,"implemented":true,"kind":"function","modifiers":[],"name":"computeDomainSeparator","nameLocation":"5519:22:53","nodeType":"FunctionDefinition","parameters":{"id":8445,"nodeType":"ParameterList","parameters":[],"src":"5541:2:53"},"returnParameters":{"id":8448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8474,"src":"5575:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8446,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5575:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5574:9:53"},"scope":8531,"src":"5510:446:53","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8501,"nodeType":"Block","src":"6210:265:53","statements":[{"expression":{"id":8483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8481,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"6220:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8482,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8478,"src":"6235:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6220:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8484,"nodeType":"ExpressionStatement","src":"6220:21:53"},{"id":8491,"nodeType":"UncheckedBlock","src":"6363:58:53","statements":[{"expression":{"id":8489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8485,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"6387:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8487,"indexExpression":{"id":8486,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"6397:2:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6387:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8488,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8478,"src":"6404:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6387:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8490,"nodeType":"ExpressionStatement","src":"6387:23:53"}]},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6453:1:53","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":8494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6445:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8493,"name":"address","nodeType":"ElementaryTypeName","src":"6445:7:53","typeDescriptions":{}}},"id":8496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6445:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8497,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"6457:2:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8498,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8478,"src":"6461:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8492,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8154,"src":"6436:8:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6436:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8500,"nodeType":"EmitStatement","src":"6431:37:53"}]},"id":8502,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"6159:5:53","nodeType":"FunctionDefinition","parameters":{"id":8479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8476,"mutability":"mutable","name":"to","nameLocation":"6173:2:53","nodeType":"VariableDeclaration","scope":8502,"src":"6165:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8475,"name":"address","nodeType":"ElementaryTypeName","src":"6165:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8478,"mutability":"mutable","name":"amount","nameLocation":"6185:6:53","nodeType":"VariableDeclaration","scope":8502,"src":"6177:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8477,"name":"uint256","nodeType":"ElementaryTypeName","src":"6177:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6164:28:53"},"returnParameters":{"id":8480,"nodeType":"ParameterList","parameters":[],"src":"6210:0:53"},"scope":8531,"src":"6150:325:53","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8529,"nodeType":"Block","src":"6543:266:53","statements":[{"expression":{"id":8513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8509,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"6553:9:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8511,"indexExpression":{"id":8510,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8504,"src":"6563:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6553:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8512,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"6572:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6553:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8514,"nodeType":"ExpressionStatement","src":"6553:25:53"},{"id":8519,"nodeType":"UncheckedBlock","src":"6697:56:53","statements":[{"expression":{"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8515,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"6721:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8516,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"6736:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6721:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8518,"nodeType":"ExpressionStatement","src":"6721:21:53"}]},{"eventCall":{"arguments":[{"id":8521,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8504,"src":"6777:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6791:1:53","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":8523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6783:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8522,"name":"address","nodeType":"ElementaryTypeName","src":"6783:7:53","typeDescriptions":{}}},"id":8525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6783:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8526,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"6795:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8520,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8154,"src":"6768:8:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6768:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8528,"nodeType":"EmitStatement","src":"6763:39:53"}]},"id":8530,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"6490:5:53","nodeType":"FunctionDefinition","parameters":{"id":8507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8504,"mutability":"mutable","name":"from","nameLocation":"6504:4:53","nodeType":"VariableDeclaration","scope":8530,"src":"6496:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8503,"name":"address","nodeType":"ElementaryTypeName","src":"6496:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8506,"mutability":"mutable","name":"amount","nameLocation":"6518:6:53","nodeType":"VariableDeclaration","scope":8530,"src":"6510:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8505,"name":"uint256","nodeType":"ElementaryTypeName","src":"6510:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6495:30:53"},"returnParameters":{"id":8508,"nodeType":"ParameterList","parameters":[],"src":"6543:0:53"},"scope":8531,"src":"6481:328:53","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":8532,"src":"474:6337:53","usedErrors":[]}],"src":"42:6770:53"},"id":53},"solmate/src/tokens/ERC721.sol":{"ast":{"absolutePath":"solmate/src/tokens/ERC721.sol","exportedSymbols":{"ERC721":[9075],"ERC721TokenReceiver":[9095]},"id":9096,"license":"AGPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":8533,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"42:24:54"},{"abstract":true,"baseContracts":[],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":8534,"nodeType":"StructuredDocumentation","src":"68:171:54","text":"@notice Modern, minimalist, and gas efficient ERC-721 implementation.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)"},"fullyImplemented":false,"id":9075,"linearizedBaseContracts":[9075],"name":"ERC721","nameLocation":"257:6:54","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":8542,"name":"Transfer","nameLocation":"455:8:54","nodeType":"EventDefinition","parameters":{"id":8541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8536,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"480:4:54","nodeType":"VariableDeclaration","scope":8542,"src":"464:20:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8535,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8538,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"502:2:54","nodeType":"VariableDeclaration","scope":8542,"src":"486:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8537,"name":"address","nodeType":"ElementaryTypeName","src":"486:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8540,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"522:2:54","nodeType":"VariableDeclaration","scope":8542,"src":"506:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8539,"name":"uint256","nodeType":"ElementaryTypeName","src":"506:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"463:62:54"},"src":"449:77:54"},{"anonymous":false,"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":8550,"name":"Approval","nameLocation":"538:8:54","nodeType":"EventDefinition","parameters":{"id":8549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8544,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"563:5:54","nodeType":"VariableDeclaration","scope":8550,"src":"547:21:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8543,"name":"address","nodeType":"ElementaryTypeName","src":"547:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8546,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"586:7:54","nodeType":"VariableDeclaration","scope":8550,"src":"570:23:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8545,"name":"address","nodeType":"ElementaryTypeName","src":"570:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8548,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"611:2:54","nodeType":"VariableDeclaration","scope":8550,"src":"595:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8547,"name":"uint256","nodeType":"ElementaryTypeName","src":"595:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"546:68:54"},"src":"532:83:54"},{"anonymous":false,"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":8558,"name":"ApprovalForAll","nameLocation":"627:14:54","nodeType":"EventDefinition","parameters":{"id":8557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8552,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"658:5:54","nodeType":"VariableDeclaration","scope":8558,"src":"642:21:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8551,"name":"address","nodeType":"ElementaryTypeName","src":"642:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8554,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"681:8:54","nodeType":"VariableDeclaration","scope":8558,"src":"665:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8553,"name":"address","nodeType":"ElementaryTypeName","src":"665:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8556,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"696:8:54","nodeType":"VariableDeclaration","scope":8558,"src":"691:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8555,"name":"bool","nodeType":"ElementaryTypeName","src":"691:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"641:64:54"},"src":"621:85:54"},{"constant":false,"functionSelector":"06fdde03","id":8560,"mutability":"mutable","name":"name","nameLocation":"913:4:54","nodeType":"VariableDeclaration","scope":9075,"src":"899:18:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8559,"name":"string","nodeType":"ElementaryTypeName","src":"899:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":8562,"mutability":"mutable","name":"symbol","nameLocation":"938:6:54","nodeType":"VariableDeclaration","scope":9075,"src":"924:20:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8561,"name":"string","nodeType":"ElementaryTypeName","src":"924:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"functionSelector":"c87b56dd","id":8569,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"960:8:54","nodeType":"FunctionDefinition","parameters":{"id":8565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8564,"mutability":"mutable","name":"id","nameLocation":"977:2:54","nodeType":"VariableDeclaration","scope":8569,"src":"969:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8563,"name":"uint256","nodeType":"ElementaryTypeName","src":"969:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:12:54"},"returnParameters":{"id":8568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8569,"src":"1010:13:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8566,"name":"string","nodeType":"ElementaryTypeName","src":"1010:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1009:15:54"},"scope":9075,"src":"951:74:54","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"id":8573,"mutability":"mutable","name":"_ownerOf","nameLocation":"1258:8:54","nodeType":"VariableDeclaration","scope":9075,"src":"1221:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":8572,"keyType":{"id":8570,"name":"uint256","nodeType":"ElementaryTypeName","src":"1229:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1221:27:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":8571,"name":"address","nodeType":"ElementaryTypeName","src":"1240:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":8577,"mutability":"mutable","name":"_balanceOf","nameLocation":"1310:10:54","nodeType":"VariableDeclaration","scope":9075,"src":"1273:47:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8576,"keyType":{"id":8574,"name":"address","nodeType":"ElementaryTypeName","src":"1281:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1273:27:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8575,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"body":{"id":8599,"nodeType":"Block","src":"1400:76:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8585,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8582,"src":"1419:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":8586,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"1427:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8588,"indexExpression":{"id":8587,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8579,"src":"1436:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1427:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1419:20:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":8590,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1418:22:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1452:1:54","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":8592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1444:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8591,"name":"address","nodeType":"ElementaryTypeName","src":"1444:7:54","typeDescriptions":{}}},"id":8594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1444:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1418:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f4d494e544544","id":8596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1456:12:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca","typeString":"literal_string \"NOT_MINTED\""},"value":"NOT_MINTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca","typeString":"literal_string \"NOT_MINTED\""}],"id":8584,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1410:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1410:59:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8598,"nodeType":"ExpressionStatement","src":"1410:59:54"}]},"functionSelector":"6352211e","id":8600,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1336:7:54","nodeType":"FunctionDefinition","parameters":{"id":8580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8579,"mutability":"mutable","name":"id","nameLocation":"1352:2:54","nodeType":"VariableDeclaration","scope":8600,"src":"1344:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8578,"name":"uint256","nodeType":"ElementaryTypeName","src":"1344:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1343:12:54"},"returnParameters":{"id":8583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8582,"mutability":"mutable","name":"owner","nameLocation":"1393:5:54","nodeType":"VariableDeclaration","scope":8600,"src":"1385:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8581,"name":"address","nodeType":"ElementaryTypeName","src":"1385:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1384:15:54"},"scope":9075,"src":"1327:149:54","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8621,"nodeType":"Block","src":"1554:96:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8608,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"1572:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1589:1:54","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":8610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1581:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8609,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:54","typeDescriptions":{}}},"id":8612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1581:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1572:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a45524f5f41444452455353","id":8614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1593:14:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af","typeString":"literal_string \"ZERO_ADDRESS\""},"value":"ZERO_ADDRESS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af","typeString":"literal_string \"ZERO_ADDRESS\""}],"id":8607,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1564:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:44:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8616,"nodeType":"ExpressionStatement","src":"1564:44:54"},{"expression":{"baseExpression":{"id":8617,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"1626:10:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8619,"indexExpression":{"id":8618,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"1637:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1626:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8606,"id":8620,"nodeType":"Return","src":"1619:24:54"}]},"functionSelector":"70a08231","id":8622,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1491:9:54","nodeType":"FunctionDefinition","parameters":{"id":8603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8602,"mutability":"mutable","name":"owner","nameLocation":"1509:5:54","nodeType":"VariableDeclaration","scope":8622,"src":"1501:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8601,"name":"address","nodeType":"ElementaryTypeName","src":"1501:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1500:15:54"},"returnParameters":{"id":8606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8622,"src":"1545:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8604,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1544:9:54"},"scope":9075,"src":"1482:168:54","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"functionSelector":"081812fc","id":8626,"mutability":"mutable","name":"getApproved","nameLocation":"1879:11:54","nodeType":"VariableDeclaration","scope":9075,"src":"1844:46:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":8625,"keyType":{"id":8623,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1844:27:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":8624,"name":"address","nodeType":"ElementaryTypeName","src":"1863:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"constant":false,"functionSelector":"e985e9c5","id":8632,"mutability":"mutable","name":"isApprovedForAll","nameLocation":"1949:16:54","nodeType":"VariableDeclaration","scope":9075,"src":"1897:68:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":8631,"keyType":{"id":8627,"name":"address","nodeType":"ElementaryTypeName","src":"1905:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1897:44:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":8630,"keyType":{"id":8628,"name":"address","nodeType":"ElementaryTypeName","src":"1924:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1916:24:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":8629,"name":"bool","nodeType":"ElementaryTypeName","src":"1935:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"body":{"id":8647,"nodeType":"Block","src":"2210:55:54","statements":[{"expression":{"id":8641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8639,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8560,"src":"2220:4:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8640,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8634,"src":"2227:5:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2220:12:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8642,"nodeType":"ExpressionStatement","src":"2220:12:54"},{"expression":{"id":8645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8643,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8562,"src":"2242:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8644,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8636,"src":"2251:7:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2242:16:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8646,"nodeType":"ExpressionStatement","src":"2242:16:54"}]},"id":8648,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8634,"mutability":"mutable","name":"_name","nameLocation":"2180:5:54","nodeType":"VariableDeclaration","scope":8648,"src":"2166:19:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8633,"name":"string","nodeType":"ElementaryTypeName","src":"2166:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8636,"mutability":"mutable","name":"_symbol","nameLocation":"2201:7:54","nodeType":"VariableDeclaration","scope":8648,"src":"2187:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8635,"name":"string","nodeType":"ElementaryTypeName","src":"2187:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2165:44:54"},"returnParameters":{"id":8638,"nodeType":"ParameterList","parameters":[],"src":"2210:0:54"},"scope":9075,"src":"2154:111:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8688,"nodeType":"Block","src":"2514:221:54","statements":[{"assignments":[8656],"declarations":[{"constant":false,"id":8656,"mutability":"mutable","name":"owner","nameLocation":"2532:5:54","nodeType":"VariableDeclaration","scope":8688,"src":"2524:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8655,"name":"address","nodeType":"ElementaryTypeName","src":"2524:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8660,"initialValue":{"baseExpression":{"id":8657,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"2540:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8659,"indexExpression":{"id":8658,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8652,"src":"2549:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2540:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2524:28:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8662,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2571:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2575:6:54","memberName":"sender","nodeType":"MemberAccess","src":"2571:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8664,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"2585:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2571:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"baseExpression":{"id":8666,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"2594:16:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":8668,"indexExpression":{"id":8667,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"2611:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2594:23:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8671,"indexExpression":{"expression":{"id":8669,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2618:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2622:6:54","memberName":"sender","nodeType":"MemberAccess","src":"2618:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2594:35:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2571:58:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f415554484f52495a4544","id":8673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2631:16:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""},"value":"NOT_AUTHORIZED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""}],"id":8661,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2563:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:85:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8675,"nodeType":"ExpressionStatement","src":"2563:85:54"},{"expression":{"id":8680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8676,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"2659:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8678,"indexExpression":{"id":8677,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8652,"src":"2671:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2659:15:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8679,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8650,"src":"2677:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2659:25:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8681,"nodeType":"ExpressionStatement","src":"2659:25:54"},{"eventCall":{"arguments":[{"id":8683,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"2709:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8684,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8650,"src":"2716:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8685,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8652,"src":"2725:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8682,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8550,"src":"2700:8:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2700:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8687,"nodeType":"EmitStatement","src":"2695:33:54"}]},"functionSelector":"095ea7b3","id":8689,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2462:7:54","nodeType":"FunctionDefinition","parameters":{"id":8653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8650,"mutability":"mutable","name":"spender","nameLocation":"2478:7:54","nodeType":"VariableDeclaration","scope":8689,"src":"2470:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8649,"name":"address","nodeType":"ElementaryTypeName","src":"2470:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8652,"mutability":"mutable","name":"id","nameLocation":"2495:2:54","nodeType":"VariableDeclaration","scope":8689,"src":"2487:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8651,"name":"uint256","nodeType":"ElementaryTypeName","src":"2487:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2469:29:54"},"returnParameters":{"id":8654,"nodeType":"ParameterList","parameters":[],"src":"2514:0:54"},"scope":9075,"src":"2453:282:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8712,"nodeType":"Block","src":"2816:128:54","statements":[{"expression":{"id":8703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8696,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"2826:16:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":8700,"indexExpression":{"expression":{"id":8697,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2843:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2847:6:54","memberName":"sender","nodeType":"MemberAccess","src":"2843:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2826:28:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8701,"indexExpression":{"id":8699,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8691,"src":"2855:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2826:38:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8702,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"2867:8:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2826:49:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8704,"nodeType":"ExpressionStatement","src":"2826:49:54"},{"eventCall":{"arguments":[{"expression":{"id":8706,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2906:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2910:6:54","memberName":"sender","nodeType":"MemberAccess","src":"2906:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8708,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8691,"src":"2918:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8709,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"2928:8:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8705,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"2891:14:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":8710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2891:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8711,"nodeType":"EmitStatement","src":"2886:51:54"}]},"functionSelector":"a22cb465","id":8713,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"2750:17:54","nodeType":"FunctionDefinition","parameters":{"id":8694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8691,"mutability":"mutable","name":"operator","nameLocation":"2776:8:54","nodeType":"VariableDeclaration","scope":8713,"src":"2768:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8690,"name":"address","nodeType":"ElementaryTypeName","src":"2768:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8693,"mutability":"mutable","name":"approved","nameLocation":"2791:8:54","nodeType":"VariableDeclaration","scope":8713,"src":"2786:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8692,"name":"bool","nodeType":"ElementaryTypeName","src":"2786:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2767:33:54"},"returnParameters":{"id":8695,"nodeType":"ParameterList","parameters":[],"src":"2816:0:54"},"scope":9075,"src":"2741:203:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8791,"nodeType":"Block","src":"3055:636:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8723,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"3073:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":8724,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"3081:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8726,"indexExpression":{"id":8725,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"3090:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3081:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3073:20:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f46524f4d","id":8728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3095:12:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93","typeString":"literal_string \"WRONG_FROM\""},"value":"WRONG_FROM"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93","typeString":"literal_string \"WRONG_FROM\""}],"id":8722,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3065:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3065:43:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8730,"nodeType":"ExpressionStatement","src":"3065:43:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8732,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"3127:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3141:1:54","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":8734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3133:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8733,"name":"address","nodeType":"ElementaryTypeName","src":"3133:7:54","typeDescriptions":{}}},"id":8736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3133:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3127:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f524543495049454e54","id":8738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3145:19:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483","typeString":"literal_string \"INVALID_RECIPIENT\""},"value":"INVALID_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483","typeString":"literal_string \"INVALID_RECIPIENT\""}],"id":8731,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3119:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3119:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8740,"nodeType":"ExpressionStatement","src":"3119:46:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8742,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3197:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3201:6:54","memberName":"sender","nodeType":"MemberAccess","src":"3197:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8744,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"3211:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3197:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"baseExpression":{"id":8746,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"3219:16:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":8748,"indexExpression":{"id":8747,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"3236:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3219:22:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8751,"indexExpression":{"expression":{"id":8749,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3242:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3246:6:54","memberName":"sender","nodeType":"MemberAccess","src":"3242:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3219:34:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3197:56:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8753,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3257:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:6:54","memberName":"sender","nodeType":"MemberAccess","src":"3257:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":8755,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"3271:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8757,"indexExpression":{"id":8756,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"3283:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3271:15:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3257:29:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3197:89:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f415554484f52495a4544","id":8760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3300:16:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""},"value":"NOT_AUTHORIZED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4","typeString":"literal_string \"NOT_AUTHORIZED\""}],"id":8741,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3176:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3176:150:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8762,"nodeType":"ExpressionStatement","src":"3176:150:54"},{"id":8773,"nodeType":"UncheckedBlock","src":"3502:84:54","statements":[{"expression":{"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"3526:18:54","subExpression":{"baseExpression":{"id":8763,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"3526:10:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8765,"indexExpression":{"id":8764,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"3537:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3526:16:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8767,"nodeType":"ExpressionStatement","src":"3526:18:54"},{"expression":{"id":8771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3559:16:54","subExpression":{"baseExpression":{"id":8768,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"3559:10:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8770,"indexExpression":{"id":8769,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"3570:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3559:14:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8772,"nodeType":"ExpressionStatement","src":"3559:16:54"}]},{"expression":{"id":8778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8774,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"3596:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8776,"indexExpression":{"id":8775,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"3605:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3596:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8777,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"3611:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3596:17:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8779,"nodeType":"ExpressionStatement","src":"3596:17:54"},{"expression":{"id":8783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3624:22:54","subExpression":{"baseExpression":{"id":8780,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"3631:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8782,"indexExpression":{"id":8781,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"3643:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3631:15:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8784,"nodeType":"ExpressionStatement","src":"3624:22:54"},{"eventCall":{"arguments":[{"id":8786,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"3671:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8787,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"3677:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8788,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"3681:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8785,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8542,"src":"3662:8:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3662:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8790,"nodeType":"EmitStatement","src":"3657:27:54"}]},"functionSelector":"23b872dd","id":8792,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2959:12:54","nodeType":"FunctionDefinition","parameters":{"id":8720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8715,"mutability":"mutable","name":"from","nameLocation":"2989:4:54","nodeType":"VariableDeclaration","scope":8792,"src":"2981:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8714,"name":"address","nodeType":"ElementaryTypeName","src":"2981:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8717,"mutability":"mutable","name":"to","nameLocation":"3011:2:54","nodeType":"VariableDeclaration","scope":8792,"src":"3003:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8716,"name":"address","nodeType":"ElementaryTypeName","src":"3003:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8719,"mutability":"mutable","name":"id","nameLocation":"3031:2:54","nodeType":"VariableDeclaration","scope":8792,"src":"3023:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8718,"name":"uint256","nodeType":"ElementaryTypeName","src":"3023:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2971:68:54"},"returnParameters":{"id":8721,"nodeType":"ParameterList","parameters":[],"src":"3055:0:54"},"scope":9075,"src":"2950:741:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8831,"nodeType":"Block","src":"3806:287:54","statements":[{"expression":{"arguments":[{"id":8802,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8794,"src":"3829:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8803,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8796,"src":"3835:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8804,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"3839:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8801,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"3816:12:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3816:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8806,"nodeType":"ExpressionStatement","src":"3816:26:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8808,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8796,"src":"3874:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3877:4:54","memberName":"code","nodeType":"MemberAccess","src":"3874:7:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3882:6:54","memberName":"length","nodeType":"MemberAccess","src":"3874:14:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3892:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3874:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":8817,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3954:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3958:6:54","memberName":"sender","nodeType":"MemberAccess","src":"3954:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8819,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8794,"src":"3966:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8820,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"3972:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":8821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3976:2:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"id":8814,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8796,"src":"3933:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8813,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"3913:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":8815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3913:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721TokenReceiver_$9095","typeString":"contract ERC721TokenReceiver"}},"id":8816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3937:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"3913:40:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":8822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3913:66:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":8823,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"3999:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":8824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4019:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"3999:36:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":8825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4036:8:54","memberName":"selector","nodeType":"MemberAccess","src":"3999:45:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3913:131:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3874:170:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":8828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4058:18:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":8807,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3853:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3853:233:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8830,"nodeType":"ExpressionStatement","src":"3853:233:54"}]},"functionSelector":"42842e0e","id":8832,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3706:16:54","nodeType":"FunctionDefinition","parameters":{"id":8799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8794,"mutability":"mutable","name":"from","nameLocation":"3740:4:54","nodeType":"VariableDeclaration","scope":8832,"src":"3732:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8793,"name":"address","nodeType":"ElementaryTypeName","src":"3732:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8796,"mutability":"mutable","name":"to","nameLocation":"3762:2:54","nodeType":"VariableDeclaration","scope":8832,"src":"3754:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8795,"name":"address","nodeType":"ElementaryTypeName","src":"3754:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8798,"mutability":"mutable","name":"id","nameLocation":"3782:2:54","nodeType":"VariableDeclaration","scope":8832,"src":"3774:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8797,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3722:68:54"},"returnParameters":{"id":8800,"nodeType":"ParameterList","parameters":[],"src":"3806:0:54"},"scope":9075,"src":"3697:396:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8873,"nodeType":"Block","src":"4237:289:54","statements":[{"expression":{"arguments":[{"id":8844,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4260:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8845,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"4266:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8846,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8838,"src":"4270:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8843,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"4247:12:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4247:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8848,"nodeType":"ExpressionStatement","src":"4247:26:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8850,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"4305:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4308:4:54","memberName":"code","nodeType":"MemberAccess","src":"4305:7:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4313:6:54","memberName":"length","nodeType":"MemberAccess","src":"4305:14:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4323:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4305:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":8859,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4385:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4389:6:54","memberName":"sender","nodeType":"MemberAccess","src":"4385:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8861,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4397:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8862,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8838,"src":"4403:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8863,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8840,"src":"4407:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":8856,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"4364:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8855,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"4344:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":8857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4344:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721TokenReceiver_$9095","typeString":"contract ERC721TokenReceiver"}},"id":8858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4368:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"4344:40:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":8864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4344:68:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":8865,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"4432:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4452:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"4432:36:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":8867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4469:8:54","memberName":"selector","nodeType":"MemberAccess","src":"4432:45:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4344:133:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4305:172:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":8870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4491:18:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":8849,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4284:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4284:235:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8872,"nodeType":"ExpressionStatement","src":"4284:235:54"}]},"functionSelector":"b88d4fde","id":8874,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4108:16:54","nodeType":"FunctionDefinition","parameters":{"id":8841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8834,"mutability":"mutable","name":"from","nameLocation":"4142:4:54","nodeType":"VariableDeclaration","scope":8874,"src":"4134:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8833,"name":"address","nodeType":"ElementaryTypeName","src":"4134:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8836,"mutability":"mutable","name":"to","nameLocation":"4164:2:54","nodeType":"VariableDeclaration","scope":8874,"src":"4156:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8835,"name":"address","nodeType":"ElementaryTypeName","src":"4156:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8838,"mutability":"mutable","name":"id","nameLocation":"4184:2:54","nodeType":"VariableDeclaration","scope":8874,"src":"4176:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8837,"name":"uint256","nodeType":"ElementaryTypeName","src":"4176:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8840,"mutability":"mutable","name":"data","nameLocation":"4211:4:54","nodeType":"VariableDeclaration","scope":8874,"src":"4196:19:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8839,"name":"bytes","nodeType":"ElementaryTypeName","src":"4196:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4124:97:54"},"returnParameters":{"id":8842,"nodeType":"ParameterList","parameters":[],"src":"4237:0:54"},"scope":9075,"src":"4099:427:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8893,"nodeType":"Block","src":"4796:253:54","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8881,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"4825:11:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031666663396137","id":8882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4840:10:54","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"src":"4825:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8884,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"4900:11:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783830616335386364","id":8885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4915:10:54","typeDescriptions":{"typeIdentifier":"t_rational_2158778573_by_1","typeString":"int_const 2158778573"},"value":"0x80ac58cd"},"src":"4900:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4825:100:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8888,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"4975:11:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783562356531333966","id":8889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4990:10:54","typeDescriptions":{"typeIdentifier":"t_rational_1532892063_by_1","typeString":"int_const 1532892063"},"value":"0x5b5e139f"},"src":"4975:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4825:175:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8880,"id":8892,"nodeType":"Return","src":"4806:194:54"}]},"functionSelector":"01ffc9a7","id":8894,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4723:17:54","nodeType":"FunctionDefinition","parameters":{"id":8877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8876,"mutability":"mutable","name":"interfaceId","nameLocation":"4748:11:54","nodeType":"VariableDeclaration","scope":8894,"src":"4741:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8875,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4741:6:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4740:20:54"},"returnParameters":{"id":8880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8894,"src":"4790:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8878,"name":"bool","nodeType":"ElementaryTypeName","src":"4790:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4789:6:54"},"scope":9075,"src":"4714:335:54","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8944,"nodeType":"Block","src":"5299:315:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8902,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"5317:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5331:1:54","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":8904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5323:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8903,"name":"address","nodeType":"ElementaryTypeName","src":"5323:7:54","typeDescriptions":{}}},"id":8906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5323:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5317:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f524543495049454e54","id":8908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5335:19:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483","typeString":"literal_string \"INVALID_RECIPIENT\""},"value":"INVALID_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483","typeString":"literal_string \"INVALID_RECIPIENT\""}],"id":8901,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5309:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5309:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8910,"nodeType":"ExpressionStatement","src":"5309:46:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8912,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"5374:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8914,"indexExpression":{"id":8913,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8898,"src":"5383:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5374:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5398:1:54","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":8916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5390:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8915,"name":"address","nodeType":"ElementaryTypeName","src":"5390:7:54","typeDescriptions":{}}},"id":8918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5390:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5374:26:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"414c52454144595f4d494e544544","id":8920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5402:16:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b","typeString":"literal_string \"ALREADY_MINTED\""},"value":"ALREADY_MINTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b","typeString":"literal_string \"ALREADY_MINTED\""}],"id":8911,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:53:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8922,"nodeType":"ExpressionStatement","src":"5366:53:54"},{"id":8928,"nodeType":"UncheckedBlock","src":"5485:51:54","statements":[{"expression":{"id":8926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5509:16:54","subExpression":{"baseExpression":{"id":8923,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"5509:10:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8925,"indexExpression":{"id":8924,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"5520:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5509:14:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8927,"nodeType":"ExpressionStatement","src":"5509:16:54"}]},{"expression":{"id":8933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8929,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"5546:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8931,"indexExpression":{"id":8930,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8898,"src":"5555:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5546:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8932,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"5561:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5546:17:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8934,"nodeType":"ExpressionStatement","src":"5546:17:54"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5596:1:54","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":8937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5588:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8936,"name":"address","nodeType":"ElementaryTypeName","src":"5588:7:54","typeDescriptions":{}}},"id":8939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5588:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8940,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"5600:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8941,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8898,"src":"5604:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8935,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8542,"src":"5579:8:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5579:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8943,"nodeType":"EmitStatement","src":"5574:33:54"}]},"id":8945,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"5252:5:54","nodeType":"FunctionDefinition","parameters":{"id":8899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8896,"mutability":"mutable","name":"to","nameLocation":"5266:2:54","nodeType":"VariableDeclaration","scope":8945,"src":"5258:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8895,"name":"address","nodeType":"ElementaryTypeName","src":"5258:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8898,"mutability":"mutable","name":"id","nameLocation":"5278:2:54","nodeType":"VariableDeclaration","scope":8945,"src":"5270:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8897,"name":"uint256","nodeType":"ElementaryTypeName","src":"5270:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5257:24:54"},"returnParameters":{"id":8900,"nodeType":"ParameterList","parameters":[],"src":"5299:0:54"},"scope":9075,"src":"5243:371:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8991,"nodeType":"Block","src":"5664:327:54","statements":[{"assignments":[8951],"declarations":[{"constant":false,"id":8951,"mutability":"mutable","name":"owner","nameLocation":"5682:5:54","nodeType":"VariableDeclaration","scope":8991,"src":"5674:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8950,"name":"address","nodeType":"ElementaryTypeName","src":"5674:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8955,"initialValue":{"baseExpression":{"id":8952,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"5690:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8954,"indexExpression":{"id":8953,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"5699:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5690:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5674:28:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8957,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8951,"src":"5721:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5738:1:54","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":8959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5730:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8958,"name":"address","nodeType":"ElementaryTypeName","src":"5730:7:54","typeDescriptions":{}}},"id":8961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5730:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5721:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f4d494e544544","id":8963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5742:12:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca","typeString":"literal_string \"NOT_MINTED\""},"value":"NOT_MINTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca","typeString":"literal_string \"NOT_MINTED\""}],"id":8956,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5713:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5713:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8965,"nodeType":"ExpressionStatement","src":"5713:42:54"},{"id":8971,"nodeType":"UncheckedBlock","src":"5821:54:54","statements":[{"expression":{"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"5845:19:54","subExpression":{"baseExpression":{"id":8966,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"5845:10:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8968,"indexExpression":{"id":8967,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8951,"src":"5856:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5845:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8970,"nodeType":"ExpressionStatement","src":"5845:19:54"}]},{"expression":{"id":8975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5885:19:54","subExpression":{"baseExpression":{"id":8972,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"5892:8:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8974,"indexExpression":{"id":8973,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"5901:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5892:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8976,"nodeType":"ExpressionStatement","src":"5885:19:54"},{"expression":{"id":8980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5915:22:54","subExpression":{"baseExpression":{"id":8977,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"5922:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8979,"indexExpression":{"id":8978,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"5934:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5922:15:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8981,"nodeType":"ExpressionStatement","src":"5915:22:54"},{"eventCall":{"arguments":[{"id":8983,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8951,"src":"5962:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5977:1:54","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":8985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5969:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8984,"name":"address","nodeType":"ElementaryTypeName","src":"5969:7:54","typeDescriptions":{}}},"id":8987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5969:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8988,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"5981:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8982,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8542,"src":"5953:8:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:31:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8990,"nodeType":"EmitStatement","src":"5948:36:54"}]},"id":8992,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"5629:5:54","nodeType":"FunctionDefinition","parameters":{"id":8948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8947,"mutability":"mutable","name":"id","nameLocation":"5643:2:54","nodeType":"VariableDeclaration","scope":8992,"src":"5635:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8946,"name":"uint256","nodeType":"ElementaryTypeName","src":"5635:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5634:12:54"},"returnParameters":{"id":8949,"nodeType":"ParameterList","parameters":[],"src":"5664:0:54"},"scope":9075,"src":"5620:371:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9031,"nodeType":"Block","src":"6245:280:54","statements":[{"expression":{"arguments":[{"id":9000,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"6261:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9001,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8996,"src":"6265:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8999,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8945,"src":"6255:5:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6255:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9003,"nodeType":"ExpressionStatement","src":"6255:13:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9005,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"6300:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6303:4:54","memberName":"code","nodeType":"MemberAccess","src":"6300:7:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6308:6:54","memberName":"length","nodeType":"MemberAccess","src":"6300:14:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6318:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6300:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":9026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9014,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6380:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6384:6:54","memberName":"sender","nodeType":"MemberAccess","src":"6380:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":9018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6400:1:54","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":9017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6392:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9016,"name":"address","nodeType":"ElementaryTypeName","src":"6392:7:54","typeDescriptions":{}}},"id":9019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6392:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9020,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8996,"src":"6404:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":9021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6408:2:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"id":9011,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"6359:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9010,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"6339:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":9012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6339:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721TokenReceiver_$9095","typeString":"contract ERC721TokenReceiver"}},"id":9013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6363:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"6339:40:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":9022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6339:72:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9023,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"6431:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":9024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6451:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"6431:36:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":9025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6468:8:54","memberName":"selector","nodeType":"MemberAccess","src":"6431:45:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6339:137:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6300:176:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":9028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6490:18:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":9004,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6279:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6279:239:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9030,"nodeType":"ExpressionStatement","src":"6279:239:54"}]},"id":9032,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"6194:9:54","nodeType":"FunctionDefinition","parameters":{"id":8997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8994,"mutability":"mutable","name":"to","nameLocation":"6212:2:54","nodeType":"VariableDeclaration","scope":9032,"src":"6204:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8993,"name":"address","nodeType":"ElementaryTypeName","src":"6204:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8996,"mutability":"mutable","name":"id","nameLocation":"6224:2:54","nodeType":"VariableDeclaration","scope":9032,"src":"6216:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8995,"name":"uint256","nodeType":"ElementaryTypeName","src":"6216:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6203:24:54"},"returnParameters":{"id":8998,"nodeType":"ParameterList","parameters":[],"src":"6245:0:54"},"scope":9075,"src":"6185:340:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9073,"nodeType":"Block","src":"6640:282:54","statements":[{"expression":{"arguments":[{"id":9042,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"6656:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9043,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9036,"src":"6660:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9041,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8945,"src":"6650:5:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6650:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9045,"nodeType":"ExpressionStatement","src":"6650:13:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9047,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"6695:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6698:4:54","memberName":"code","nodeType":"MemberAccess","src":"6695:7:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6703:6:54","memberName":"length","nodeType":"MemberAccess","src":"6695:14:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6713:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6695:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":9068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9056,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6775:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6779:6:54","memberName":"sender","nodeType":"MemberAccess","src":"6775:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":9060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6795:1:54","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":9059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6787:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9058,"name":"address","nodeType":"ElementaryTypeName","src":"6787:7:54","typeDescriptions":{}}},"id":9061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6787:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9062,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9036,"src":"6799:2:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9063,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9038,"src":"6803:4:54","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_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":9053,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"6754:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9052,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"6734:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":9054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6734:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721TokenReceiver_$9095","typeString":"contract ERC721TokenReceiver"}},"id":9055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6758:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"6734:40:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":9064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6734:74:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9065,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"6828:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":9066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6848:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"6828:36:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":9067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6865:8:54","memberName":"selector","nodeType":"MemberAccess","src":"6828:45:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6734:139:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6695:178:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e534146455f524543495049454e54","id":9070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6887:18:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""},"value":"UNSAFE_RECIPIENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d","typeString":"literal_string \"UNSAFE_RECIPIENT\""}],"id":9046,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6674:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6674:241:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9072,"nodeType":"ExpressionStatement","src":"6674:241:54"}]},"id":9074,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"6540:9:54","nodeType":"FunctionDefinition","parameters":{"id":9039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9034,"mutability":"mutable","name":"to","nameLocation":"6567:2:54","nodeType":"VariableDeclaration","scope":9074,"src":"6559:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9033,"name":"address","nodeType":"ElementaryTypeName","src":"6559:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9036,"mutability":"mutable","name":"id","nameLocation":"6587:2:54","nodeType":"VariableDeclaration","scope":9074,"src":"6579:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9035,"name":"uint256","nodeType":"ElementaryTypeName","src":"6579:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9038,"mutability":"mutable","name":"data","nameLocation":"6612:4:54","nodeType":"VariableDeclaration","scope":9074,"src":"6599:17:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9037,"name":"bytes","nodeType":"ElementaryTypeName","src":"6599:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6549:73:54"},"returnParameters":{"id":9040,"nodeType":"ParameterList","parameters":[],"src":"6640:0:54"},"scope":9075,"src":"6531:391:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":9096,"src":"239:6685:54","usedErrors":[]},{"abstract":true,"baseContracts":[],"canonicalName":"ERC721TokenReceiver","contractDependencies":[],"contractKind":"contract","documentation":{"id":9076,"nodeType":"StructuredDocumentation","src":"6926:182:54","text":"@notice A generic interface for a contract which properly accepts ERC721 tokens.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)"},"fullyImplemented":true,"id":9095,"linearizedBaseContracts":[9095],"name":"ERC721TokenReceiver","nameLocation":"7126:19:54","nodeType":"ContractDefinition","nodes":[{"body":{"id":9093,"nodeType":"Block","src":"7293:69:54","statements":[{"expression":{"expression":{"expression":{"id":9089,"name":"ERC721TokenReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"7310:19:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721TokenReceiver_$9095_$","typeString":"type(contract ERC721TokenReceiver)"}},"id":9090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:16:54","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":9094,"src":"7310:36:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":9091,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7347:8:54","memberName":"selector","nodeType":"MemberAccess","src":"7310:45:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":9088,"id":9092,"nodeType":"Return","src":"7303:52:54"}]},"functionSelector":"150b7a02","id":9094,"implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"7161:16:54","nodeType":"FunctionDefinition","parameters":{"id":9085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9078,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9094,"src":"7187:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9077,"name":"address","nodeType":"ElementaryTypeName","src":"7187:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9080,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9094,"src":"7204:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9079,"name":"address","nodeType":"ElementaryTypeName","src":"7204:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9094,"src":"7221:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9081,"name":"uint256","nodeType":"ElementaryTypeName","src":"7221:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9094,"src":"7238:14:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9083,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7177:81:54"},"returnParameters":{"id":9088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9094,"src":"7285:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9086,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7285:6:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7284:8:54"},"scope":9095,"src":"7152:210:54","stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"scope":9096,"src":"7108:256:54","usedErrors":[]}],"src":"42:7323:54"},"id":54},"solmate/src/utils/SafeTransferLib.sol":{"ast":{"absolutePath":"solmate/src/utils/SafeTransferLib.sol","exportedSymbols":{"ERC20":[8531],"SafeTransferLib":[9180]},"id":9181,"license":"AGPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":9097,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"42:24:55"},{"absolutePath":"solmate/src/tokens/ERC20.sol","file":"../tokens/ERC20.sol","id":9099,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9181,"sourceUnit":8532,"src":"68:42:55","symbolAliases":[{"foreign":{"id":9098,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"76:5:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeTransferLib","contractDependencies":[],"contractKind":"library","documentation":{"id":9100,"nodeType":"StructuredDocumentation","src":"112:333:55","text":"@notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)\n @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer."},"fullyImplemented":true,"id":9180,"linearizedBaseContracts":[9180],"name":"SafeTransferLib","nameLocation":"453:15:55","nodeType":"ContractDefinition","nodes":[{"body":{"id":9116,"nodeType":"Block","src":"720:277:55","statements":[{"assignments":[9108],"declarations":[{"constant":false,"id":9108,"mutability":"mutable","name":"success","nameLocation":"735:7:55","nodeType":"VariableDeclaration","scope":9116,"src":"730:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9107,"name":"bool","nodeType":"ElementaryTypeName","src":"730:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9109,"nodeType":"VariableDeclarationStatement","src":"730:12:55"},{"AST":{"nodeType":"YulBlock","src":"805:136:55","statements":[{"nodeType":"YulAssignment","src":"885:46:55","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"901:3:55"},"nodeType":"YulFunctionCall","src":"901:5:55"},{"name":"to","nodeType":"YulIdentifier","src":"908:2:55"},{"name":"amount","nodeType":"YulIdentifier","src":"912:6:55"},{"kind":"number","nodeType":"YulLiteral","src":"920:1:55","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"923:1:55","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"926:1:55","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"929:1:55","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"896:4:55"},"nodeType":"YulFunctionCall","src":"896:35:55"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"885:7:55"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"istanbul","externalReferences":[{"declaration":9104,"isOffset":false,"isSlot":false,"src":"912:6:55","valueSize":1},{"declaration":9108,"isOffset":false,"isSlot":false,"src":"885:7:55","valueSize":1},{"declaration":9102,"isOffset":false,"isSlot":false,"src":"908:2:55","valueSize":1}],"id":9110,"nodeType":"InlineAssembly","src":"796:145:55"},{"expression":{"arguments":[{"id":9112,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"959:7:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4554485f5452414e534645525f4641494c4544","id":9113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"968:21:55","typeDescriptions":{"typeIdentifier":"t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29","typeString":"literal_string \"ETH_TRANSFER_FAILED\""},"value":"ETH_TRANSFER_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29","typeString":"literal_string \"ETH_TRANSFER_FAILED\""}],"id":9111,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"951:7:55","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"951:39:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9115,"nodeType":"ExpressionStatement","src":"951:39:55"}]},"id":9117,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferETH","nameLocation":"667:15:55","nodeType":"FunctionDefinition","parameters":{"id":9105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9102,"mutability":"mutable","name":"to","nameLocation":"691:2:55","nodeType":"VariableDeclaration","scope":9117,"src":"683:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9101,"name":"address","nodeType":"ElementaryTypeName","src":"683:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9104,"mutability":"mutable","name":"amount","nameLocation":"703:6:55","nodeType":"VariableDeclaration","scope":9117,"src":"695:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9103,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"682:28:55"},"returnParameters":{"id":9106,"nodeType":"ParameterList","parameters":[],"src":"720:0:55"},"scope":9180,"src":"658:339:55","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9138,"nodeType":"Block","src":"1315:1511:55","statements":[{"assignments":[9130],"declarations":[{"constant":false,"id":9130,"mutability":"mutable","name":"success","nameLocation":"1330:7:55","nodeType":"VariableDeclaration","scope":9138,"src":"1325:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9129,"name":"bool","nodeType":"ElementaryTypeName","src":"1325:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9131,"nodeType":"VariableDeclarationStatement","src":"1325:12:55"},{"AST":{"nodeType":"YulBlock","src":"1400:1369:55","statements":[{"nodeType":"YulVariableDeclaration","src":"1464:36:55","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1495:4:55","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1489:5:55"},"nodeType":"YulFunctionCall","src":"1489:11:55"},"variables":[{"name":"freeMemoryPointer","nodeType":"YulTypedName","src":"1468:17:55","type":""}]},{"expression":{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"1618:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"1637:66:55","type":"","value":"0x23b872dd00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1611:6:55"},"nodeType":"YulFunctionCall","src":"1611:93:55"},"nodeType":"YulExpressionStatement","src":"1611:93:55"},{"expression":{"arguments":[{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"1728:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"1747:1:55","type":"","value":"4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1724:3:55"},"nodeType":"YulFunctionCall","src":"1724:25:55"},{"arguments":[{"name":"from","nodeType":"YulIdentifier","src":"1755:4:55"},{"kind":"number","nodeType":"YulLiteral","src":"1761:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1751:3:55"},"nodeType":"YulFunctionCall","src":"1751:53:55"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1717:6:55"},"nodeType":"YulFunctionCall","src":"1717:88:55"},"nodeType":"YulExpressionStatement","src":"1717:88:55"},{"expression":{"arguments":[{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"1869:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"1888:2:55","type":"","value":"36"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:55"},"nodeType":"YulFunctionCall","src":"1865:26:55"},{"arguments":[{"name":"to","nodeType":"YulIdentifier","src":"1897:2:55"},{"kind":"number","nodeType":"YulLiteral","src":"1901:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1893:3:55"},"nodeType":"YulFunctionCall","src":"1893:51:55"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1858:6:55"},"nodeType":"YulFunctionCall","src":"1858:87:55"},"nodeType":"YulExpressionStatement","src":"1858:87:55"},{"expression":{"arguments":[{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"2007:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"2026:2:55","type":"","value":"68"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:55"},"nodeType":"YulFunctionCall","src":"2003:26:55"},{"name":"amount","nodeType":"YulIdentifier","src":"2031:6:55"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1996:6:55"},"nodeType":"YulFunctionCall","src":"1996:42:55"},"nodeType":"YulExpressionStatement","src":"1996:42:55"},{"nodeType":"YulAssignment","src":"2320:63:55","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"2336:3:55"},"nodeType":"YulFunctionCall","src":"2336:5:55"},{"name":"token","nodeType":"YulIdentifier","src":"2343:5:55"},{"kind":"number","nodeType":"YulLiteral","src":"2350:1:55","type":"","value":"0"},{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"2353:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"2372:3:55","type":"","value":"100"},{"kind":"number","nodeType":"YulLiteral","src":"2377:1:55","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2380:2:55","type":"","value":"32"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"2331:4:55"},"nodeType":"YulFunctionCall","src":"2331:52:55"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"2320:7:55"}]},{"body":{"nodeType":"YulBlock","src":"2659:100:55","statements":[{"nodeType":"YulAssignment","src":"2677:67:55","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"2717:5:55"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"2705:11:55"},"nodeType":"YulFunctionCall","src":"2705:18:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2698:6:55"},"nodeType":"YulFunctionCall","src":"2698:26:55"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2726:14:55"},"nodeType":"YulFunctionCall","src":"2726:16:55"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2695:2:55"},"nodeType":"YulFunctionCall","src":"2695:48:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2688:6:55"},"nodeType":"YulFunctionCall","src":"2688:56:55"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"2677:7:55"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2614:1:55","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2608:5:55"},"nodeType":"YulFunctionCall","src":"2608:8:55"},{"kind":"number","nodeType":"YulLiteral","src":"2618:1:55","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2605:2:55"},"nodeType":"YulFunctionCall","src":"2605:15:55"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2625:14:55"},"nodeType":"YulFunctionCall","src":"2625:16:55"},{"kind":"number","nodeType":"YulLiteral","src":"2643:2:55","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2622:2:55"},"nodeType":"YulFunctionCall","src":"2622:24:55"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2601:3:55"},"nodeType":"YulFunctionCall","src":"2601:46:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2594:6:55"},"nodeType":"YulFunctionCall","src":"2594:54:55"},{"name":"success","nodeType":"YulIdentifier","src":"2650:7:55"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2590:3:55"},"nodeType":"YulFunctionCall","src":"2590:68:55"},"nodeType":"YulIf","src":"2587:172:55"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"istanbul","externalReferences":[{"declaration":9126,"isOffset":false,"isSlot":false,"src":"2031:6:55","valueSize":1},{"declaration":9122,"isOffset":false,"isSlot":false,"src":"1755:4:55","valueSize":1},{"declaration":9130,"isOffset":false,"isSlot":false,"src":"2320:7:55","valueSize":1},{"declaration":9130,"isOffset":false,"isSlot":false,"src":"2650:7:55","valueSize":1},{"declaration":9130,"isOffset":false,"isSlot":false,"src":"2677:7:55","valueSize":1},{"declaration":9124,"isOffset":false,"isSlot":false,"src":"1897:2:55","valueSize":1},{"declaration":9120,"isOffset":false,"isSlot":false,"src":"2343:5:55","valueSize":1},{"declaration":9120,"isOffset":false,"isSlot":false,"src":"2717:5:55","valueSize":1}],"id":9132,"nodeType":"InlineAssembly","src":"1391:1378:55"},{"expression":{"arguments":[{"id":9134,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9130,"src":"2787:7:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5452414e534645525f46524f4d5f4641494c4544","id":9135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2796:22:55","typeDescriptions":{"typeIdentifier":"t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7","typeString":"literal_string \"TRANSFER_FROM_FAILED\""},"value":"TRANSFER_FROM_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7","typeString":"literal_string \"TRANSFER_FROM_FAILED\""}],"id":9133,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2779:7:55","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:40:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9137,"nodeType":"ExpressionStatement","src":"2779:40:55"}]},"id":9139,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1196:16:55","nodeType":"FunctionDefinition","parameters":{"id":9127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9120,"mutability":"mutable","name":"token","nameLocation":"1228:5:55","nodeType":"VariableDeclaration","scope":9139,"src":"1222:11:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":9119,"nodeType":"UserDefinedTypeName","pathNode":{"id":9118,"name":"ERC20","nameLocations":["1222:5:55"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"1222:5:55"},"referencedDeclaration":8531,"src":"1222:5:55","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"},{"constant":false,"id":9122,"mutability":"mutable","name":"from","nameLocation":"1251:4:55","nodeType":"VariableDeclaration","scope":9139,"src":"1243:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9121,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9124,"mutability":"mutable","name":"to","nameLocation":"1273:2:55","nodeType":"VariableDeclaration","scope":9139,"src":"1265:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9123,"name":"address","nodeType":"ElementaryTypeName","src":"1265:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9126,"mutability":"mutable","name":"amount","nameLocation":"1293:6:55","nodeType":"VariableDeclaration","scope":9139,"src":"1285:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9125,"name":"uint256","nodeType":"ElementaryTypeName","src":"1285:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1212:93:55"},"returnParameters":{"id":9128,"nodeType":"ParameterList","parameters":[],"src":"1315:0:55"},"scope":9180,"src":"1187:1639:55","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9158,"nodeType":"Block","src":"2934:1362:55","statements":[{"assignments":[9150],"declarations":[{"constant":false,"id":9150,"mutability":"mutable","name":"success","nameLocation":"2949:7:55","nodeType":"VariableDeclaration","scope":9158,"src":"2944:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9149,"name":"bool","nodeType":"ElementaryTypeName","src":"2944:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9151,"nodeType":"VariableDeclarationStatement","src":"2944:12:55"},{"AST":{"nodeType":"YulBlock","src":"3019:1225:55","statements":[{"nodeType":"YulVariableDeclaration","src":"3083:36:55","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3114:4:55","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3108:5:55"},"nodeType":"YulFunctionCall","src":"3108:11:55"},"variables":[{"name":"freeMemoryPointer","nodeType":"YulTypedName","src":"3087:17:55","type":""}]},{"expression":{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"3237:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"3256:66:55","type":"","value":"0xa9059cbb00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3230:6:55"},"nodeType":"YulFunctionCall","src":"3230:93:55"},"nodeType":"YulExpressionStatement","src":"3230:93:55"},{"expression":{"arguments":[{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"3347:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"3366:1:55","type":"","value":"4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3343:3:55"},"nodeType":"YulFunctionCall","src":"3343:25:55"},{"arguments":[{"name":"to","nodeType":"YulIdentifier","src":"3374:2:55"},{"kind":"number","nodeType":"YulLiteral","src":"3378:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3370:3:55"},"nodeType":"YulFunctionCall","src":"3370:51:55"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3336:6:55"},"nodeType":"YulFunctionCall","src":"3336:86:55"},"nodeType":"YulExpressionStatement","src":"3336:86:55"},{"expression":{"arguments":[{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"3484:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"3503:2:55","type":"","value":"36"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3480:3:55"},"nodeType":"YulFunctionCall","src":"3480:26:55"},{"name":"amount","nodeType":"YulIdentifier","src":"3508:6:55"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3473:6:55"},"nodeType":"YulFunctionCall","src":"3473:42:55"},"nodeType":"YulExpressionStatement","src":"3473:42:55"},{"nodeType":"YulAssignment","src":"3796:62:55","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"3812:3:55"},"nodeType":"YulFunctionCall","src":"3812:5:55"},{"name":"token","nodeType":"YulIdentifier","src":"3819:5:55"},{"kind":"number","nodeType":"YulLiteral","src":"3826:1:55","type":"","value":"0"},{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"3829:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"3848:2:55","type":"","value":"68"},{"kind":"number","nodeType":"YulLiteral","src":"3852:1:55","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3855:2:55","type":"","value":"32"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"3807:4:55"},"nodeType":"YulFunctionCall","src":"3807:51:55"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"3796:7:55"}]},{"body":{"nodeType":"YulBlock","src":"4134:100:55","statements":[{"nodeType":"YulAssignment","src":"4152:67:55","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"4192:5:55"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"4180:11:55"},"nodeType":"YulFunctionCall","src":"4180:18:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4173:6:55"},"nodeType":"YulFunctionCall","src":"4173:26:55"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4201:14:55"},"nodeType":"YulFunctionCall","src":"4201:16:55"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4170:2:55"},"nodeType":"YulFunctionCall","src":"4170:48:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4163:6:55"},"nodeType":"YulFunctionCall","src":"4163:56:55"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"4152:7:55"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4089:1:55","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4083:5:55"},"nodeType":"YulFunctionCall","src":"4083:8:55"},{"kind":"number","nodeType":"YulLiteral","src":"4093:1:55","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4080:2:55"},"nodeType":"YulFunctionCall","src":"4080:15:55"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4100:14:55"},"nodeType":"YulFunctionCall","src":"4100:16:55"},{"kind":"number","nodeType":"YulLiteral","src":"4118:2:55","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4097:2:55"},"nodeType":"YulFunctionCall","src":"4097:24:55"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4076:3:55"},"nodeType":"YulFunctionCall","src":"4076:46:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4069:6:55"},"nodeType":"YulFunctionCall","src":"4069:54:55"},{"name":"success","nodeType":"YulIdentifier","src":"4125:7:55"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4065:3:55"},"nodeType":"YulFunctionCall","src":"4065:68:55"},"nodeType":"YulIf","src":"4062:172:55"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"istanbul","externalReferences":[{"declaration":9146,"isOffset":false,"isSlot":false,"src":"3508:6:55","valueSize":1},{"declaration":9150,"isOffset":false,"isSlot":false,"src":"3796:7:55","valueSize":1},{"declaration":9150,"isOffset":false,"isSlot":false,"src":"4125:7:55","valueSize":1},{"declaration":9150,"isOffset":false,"isSlot":false,"src":"4152:7:55","valueSize":1},{"declaration":9144,"isOffset":false,"isSlot":false,"src":"3374:2:55","valueSize":1},{"declaration":9142,"isOffset":false,"isSlot":false,"src":"3819:5:55","valueSize":1},{"declaration":9142,"isOffset":false,"isSlot":false,"src":"4192:5:55","valueSize":1}],"id":9152,"nodeType":"InlineAssembly","src":"3010:1234:55"},{"expression":{"arguments":[{"id":9154,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"4262:7:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5452414e534645525f4641494c4544","id":9155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4271:17:55","typeDescriptions":{"typeIdentifier":"t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72","typeString":"literal_string \"TRANSFER_FAILED\""},"value":"TRANSFER_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72","typeString":"literal_string \"TRANSFER_FAILED\""}],"id":9153,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4254:7:55","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4254:35:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9157,"nodeType":"ExpressionStatement","src":"4254:35:55"}]},"id":9159,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"2841:12:55","nodeType":"FunctionDefinition","parameters":{"id":9147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9142,"mutability":"mutable","name":"token","nameLocation":"2869:5:55","nodeType":"VariableDeclaration","scope":9159,"src":"2863:11:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":9141,"nodeType":"UserDefinedTypeName","pathNode":{"id":9140,"name":"ERC20","nameLocations":["2863:5:55"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"2863:5:55"},"referencedDeclaration":8531,"src":"2863:5:55","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"},{"constant":false,"id":9144,"mutability":"mutable","name":"to","nameLocation":"2892:2:55","nodeType":"VariableDeclaration","scope":9159,"src":"2884:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9143,"name":"address","nodeType":"ElementaryTypeName","src":"2884:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9146,"mutability":"mutable","name":"amount","nameLocation":"2912:6:55","nodeType":"VariableDeclaration","scope":9159,"src":"2904:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9145,"name":"uint256","nodeType":"ElementaryTypeName","src":"2904:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2853:71:55"},"returnParameters":{"id":9148,"nodeType":"ParameterList","parameters":[],"src":"2934:0:55"},"scope":9180,"src":"2832:1464:55","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9178,"nodeType":"Block","src":"4403:1361:55","statements":[{"assignments":[9170],"declarations":[{"constant":false,"id":9170,"mutability":"mutable","name":"success","nameLocation":"4418:7:55","nodeType":"VariableDeclaration","scope":9178,"src":"4413:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9169,"name":"bool","nodeType":"ElementaryTypeName","src":"4413:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9171,"nodeType":"VariableDeclarationStatement","src":"4413:12:55"},{"AST":{"nodeType":"YulBlock","src":"4488:1225:55","statements":[{"nodeType":"YulVariableDeclaration","src":"4552:36:55","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4583:4:55","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4577:5:55"},"nodeType":"YulFunctionCall","src":"4577:11:55"},"variables":[{"name":"freeMemoryPointer","nodeType":"YulTypedName","src":"4556:17:55","type":""}]},{"expression":{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"4706:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"4725:66:55","type":"","value":"0x095ea7b300000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4699:6:55"},"nodeType":"YulFunctionCall","src":"4699:93:55"},"nodeType":"YulExpressionStatement","src":"4699:93:55"},{"expression":{"arguments":[{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"4816:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"4835:1:55","type":"","value":"4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4812:3:55"},"nodeType":"YulFunctionCall","src":"4812:25:55"},{"arguments":[{"name":"to","nodeType":"YulIdentifier","src":"4843:2:55"},{"kind":"number","nodeType":"YulLiteral","src":"4847:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4839:3:55"},"nodeType":"YulFunctionCall","src":"4839:51:55"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4805:6:55"},"nodeType":"YulFunctionCall","src":"4805:86:55"},"nodeType":"YulExpressionStatement","src":"4805:86:55"},{"expression":{"arguments":[{"arguments":[{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"4953:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"4972:2:55","type":"","value":"36"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4949:3:55"},"nodeType":"YulFunctionCall","src":"4949:26:55"},{"name":"amount","nodeType":"YulIdentifier","src":"4977:6:55"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4942:6:55"},"nodeType":"YulFunctionCall","src":"4942:42:55"},"nodeType":"YulExpressionStatement","src":"4942:42:55"},{"nodeType":"YulAssignment","src":"5265:62:55","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"5281:3:55"},"nodeType":"YulFunctionCall","src":"5281:5:55"},{"name":"token","nodeType":"YulIdentifier","src":"5288:5:55"},{"kind":"number","nodeType":"YulLiteral","src":"5295:1:55","type":"","value":"0"},{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"5298:17:55"},{"kind":"number","nodeType":"YulLiteral","src":"5317:2:55","type":"","value":"68"},{"kind":"number","nodeType":"YulLiteral","src":"5321:1:55","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5324:2:55","type":"","value":"32"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"5276:4:55"},"nodeType":"YulFunctionCall","src":"5276:51:55"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"5265:7:55"}]},{"body":{"nodeType":"YulBlock","src":"5603:100:55","statements":[{"nodeType":"YulAssignment","src":"5621:67:55","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"5661:5:55"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"5649:11:55"},"nodeType":"YulFunctionCall","src":"5649:18:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5642:6:55"},"nodeType":"YulFunctionCall","src":"5642:26:55"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"5670:14:55"},"nodeType":"YulFunctionCall","src":"5670:16:55"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5639:2:55"},"nodeType":"YulFunctionCall","src":"5639:48:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5632:6:55"},"nodeType":"YulFunctionCall","src":"5632:56:55"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"5621:7:55"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5558:1:55","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5552:5:55"},"nodeType":"YulFunctionCall","src":"5552:8:55"},{"kind":"number","nodeType":"YulLiteral","src":"5562:1:55","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5549:2:55"},"nodeType":"YulFunctionCall","src":"5549:15:55"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"5569:14:55"},"nodeType":"YulFunctionCall","src":"5569:16:55"},{"kind":"number","nodeType":"YulLiteral","src":"5587:2:55","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5566:2:55"},"nodeType":"YulFunctionCall","src":"5566:24:55"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5545:3:55"},"nodeType":"YulFunctionCall","src":"5545:46:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5538:6:55"},"nodeType":"YulFunctionCall","src":"5538:54:55"},{"name":"success","nodeType":"YulIdentifier","src":"5594:7:55"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5534:3:55"},"nodeType":"YulFunctionCall","src":"5534:68:55"},"nodeType":"YulIf","src":"5531:172:55"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"istanbul","externalReferences":[{"declaration":9166,"isOffset":false,"isSlot":false,"src":"4977:6:55","valueSize":1},{"declaration":9170,"isOffset":false,"isSlot":false,"src":"5265:7:55","valueSize":1},{"declaration":9170,"isOffset":false,"isSlot":false,"src":"5594:7:55","valueSize":1},{"declaration":9170,"isOffset":false,"isSlot":false,"src":"5621:7:55","valueSize":1},{"declaration":9164,"isOffset":false,"isSlot":false,"src":"4843:2:55","valueSize":1},{"declaration":9162,"isOffset":false,"isSlot":false,"src":"5288:5:55","valueSize":1},{"declaration":9162,"isOffset":false,"isSlot":false,"src":"5661:5:55","valueSize":1}],"id":9172,"nodeType":"InlineAssembly","src":"4479:1234:55"},{"expression":{"arguments":[{"id":9174,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"5731:7:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"415050524f56455f4641494c4544","id":9175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5740:16:55","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd400c5237ae346977ee020ef8d0d26a880c07edf7eba69a8848f0d31e9a88f2","typeString":"literal_string \"APPROVE_FAILED\""},"value":"APPROVE_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cd400c5237ae346977ee020ef8d0d26a880c07edf7eba69a8848f0d31e9a88f2","typeString":"literal_string \"APPROVE_FAILED\""}],"id":9173,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5723:7:55","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5723:34:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9177,"nodeType":"ExpressionStatement","src":"5723:34:55"}]},"id":9179,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"4311:11:55","nodeType":"FunctionDefinition","parameters":{"id":9167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9162,"mutability":"mutable","name":"token","nameLocation":"4338:5:55","nodeType":"VariableDeclaration","scope":9179,"src":"4332:11:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"},"typeName":{"id":9161,"nodeType":"UserDefinedTypeName","pathNode":{"id":9160,"name":"ERC20","nameLocations":["4332:5:55"],"nodeType":"IdentifierPath","referencedDeclaration":8531,"src":"4332:5:55"},"referencedDeclaration":8531,"src":"4332:5:55","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8531","typeString":"contract ERC20"}},"visibility":"internal"},{"constant":false,"id":9164,"mutability":"mutable","name":"to","nameLocation":"4361:2:55","nodeType":"VariableDeclaration","scope":9179,"src":"4353:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9163,"name":"address","nodeType":"ElementaryTypeName","src":"4353:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9166,"mutability":"mutable","name":"amount","nameLocation":"4381:6:55","nodeType":"VariableDeclaration","scope":9179,"src":"4373:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9165,"name":"uint256","nodeType":"ElementaryTypeName","src":"4373:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4322:71:55"},"returnParameters":{"id":9168,"nodeType":"ParameterList","parameters":[],"src":"4403:0:55"},"scope":9180,"src":"4302:1462:55","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9181,"src":"445:5321:55","usedErrors":[]}],"src":"42:5725:55"},"id":55}},"contracts":{"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"IAstraCLPool":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","collectProtocol(address,uint128,uint128)":"85b66729","factory()":"c45a0155","fee()":"ddca3f43","feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","liquidity()":"1a686502","maxLiquidityPerTick()":"70cf754a","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","observations(uint256)":"252c09d7","observe(uint32[])":"883bdbfd","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","setFeeProtocol(uint8,uint8)":"8206a4d1","slot0()":"3850c7bd","snapshotCumulativesInside(int24,int24)":"a38807f2","swap(address,bool,int256,uint160,bytes)":"128acb08","tickBitmap(int16)":"5339c296","tickSpacing()":"d0c93a7c","ticks(int24)":"f30dba93","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The pool interface is broken up into many smaller pieces\",\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use\"}},\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"The interface for a Astra CL Pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"An Astra pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":\"IAstraCLPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol":{"IAstraCLSwapCallback":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLSwapCallback(int256,int256,bytes)":"11c17848"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}}},\"title\":\"Callback for IAstraCLPoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"}},\"notice\":\"Any contract that calls IAstraCLPoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":\"IAstraCLSwapCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"IAstraCLPoolActions":{"abi":[{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","swap(address,bool,int256,uint160,bytes)":"128acb08"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}}},\"title\":\"Permissionless pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"}},\"notice\":\"Contains pool methods that can be called by anyone\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":\"IAstraCLPoolActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"IAstraCLPoolDerivedState":{"abi":[{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"observe(uint32[])":"883bdbfd","snapshotCumulativesInside(int24,int24)":"a38807f2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}}},\"title\":\"Pool state that is not stored\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"}},\"notice\":\"Contains view functions to provide information about the pool that is computed rather than stored on the blockchain. The functions here may have variable gas costs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":\"IAstraCLPoolDerivedState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"IAstraCLPoolEvents":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}],\"devdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"details\":\"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\",\"params\":{\"amount\":\"The amount of liquidity to remove\",\"amount0\":\"The amount of token0 withdrawn\",\"amount1\":\"The amount of token1 withdrawn\",\"owner\":\"The owner of the position for which liquidity is removed\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"details\":\"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\",\"params\":{\"amount0\":\"The amount of token0 fees collected\",\"amount1\":\"The amount of token1 fees collected\",\"owner\":\"The owner of the position for which fees are collected\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"CollectProtocol(address,address,uint128,uint128)\":{\"params\":{\"amount0\":\"The amount of token1 protocol fees that is withdrawn\",\"recipient\":\"The address that receives the collected protocol fees\",\"sender\":\"The address that collects the protocol fees\"}},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was flashed\",\"amount1\":\"The amount of token1 that was flashed\",\"paid0\":\"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\",\"paid1\":\"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\",\"recipient\":\"The address that received the tokens from flash\",\"sender\":\"The address that initiated the swap call, and that received the callback\"}},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"details\":\"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.\",\"params\":{\"observationCardinalityNextNew\":\"The updated value of the next observation cardinality\",\"observationCardinalityNextOld\":\"The previous value of the next observation cardinality\"}},\"Initialize(uint160,int24)\":{\"details\":\"Mint/Burn/Swap cannot be emitted by the pool before Initialize\",\"params\":{\"sqrtPriceX96\":\"The initial sqrt price of the pool, as a Q64.96\",\"tick\":\"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\"}},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of liquidity minted to the position range\",\"amount0\":\"How much token0 was required for the minted liquidity\",\"amount1\":\"How much token1 was required for the minted liquidity\",\"owner\":\"The owner of the position and recipient of any minted liquidity\",\"sender\":\"The address that minted the liquidity\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"params\":{\"feeProtocol0New\":\"The updated value of the token0 protocol fee\",\"feeProtocol0Old\":\"The previous value of the token0 protocol fee\",\"feeProtocol1New\":\"The updated value of the token1 protocol fee\",\"feeProtocol1Old\":\"The previous value of the token1 protocol fee\"}},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"params\":{\"amount0\":\"The delta of the token0 balance of the pool\",\"amount1\":\"The delta of the token1 balance of the pool\",\"liquidity\":\"The liquidity of the pool after the swap\",\"recipient\":\"The address that received the output of the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"Events emitted by a pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains all events emitted by the pool\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":\"IAstraCLPoolEvents\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"IAstraCLPoolImmutables":{"abi":[{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"factory()":"c45a0155","fee()":"ddca3f43","maxLiquidityPerTick()":"70cf754a","tickSpacing()":"d0c93a7c","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"Pool state that never changes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"These parameters are fixed for a pool forever, i.e., the methods will always return the same values\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":\"IAstraCLPoolImmutables\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"IAstraCLPoolOwnerActions":{"abi":[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectProtocol(address,uint128,uint128)":"85b66729","setFeeProtocol(uint8,uint8)":"8206a4d1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":\"IAstraCLPoolOwnerActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"IAstraCLPoolState":{"abi":[{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","liquidity()":"1a686502","observations(uint256)":"252c09d7","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","slot0()":"3850c7bd","tickBitmap(int16)":"5339c296","ticks(int24)":"f30dba93"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}}},\"title\":\"Pool state that can change\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"}},\"notice\":\"These methods compose the pool's state, and can change with any frequency including multiple times per transaction\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":\"IAstraCLPoolState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol":{"SafeCast":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"165:884:8:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"165:884:8:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Safe casting methods\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods for safely casting between types\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]}},\"version\":1}"}},"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol":{"IAstraPair":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","MINIMUM_LIQUIDITY()":"ba9a7a56","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address)":"89afcb44","decimals()":"313ce567","factory()":"c45a0155","getReserves()":"0902f1ac","initialize(address,address)":"485cc955","kLast()":"7464fc3d","mint(address)":"6a627842","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","price0CumulativeLast()":"5909c0d5","price1CumulativeLast()":"5a3d5493","skim(address)":"bc25cf77","swap(uint256,uint256,address,bytes)":"022c0d9f","symbol()":"95d89b41","sync()":"fff6cae9","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol\":\"IAstraPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"IERC1155Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"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.17+commit.8df45f5f\"},\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"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 `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` 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\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"contracts/UniversalRouter.sol":{"UniversalRouter":{"abi":[{"inputs":[{"components":[{"internalType":"address","name":"permit2","type":"address"},{"internalType":"address","name":"samb","type":"address"},{"internalType":"address","name":"seaportV1_5","type":"address"},{"internalType":"address","name":"seaportV1_4","type":"address"},{"internalType":"address","name":"openseaConduit","type":"address"},{"internalType":"address","name":"nftxZap","type":"address"},{"internalType":"address","name":"x2y2","type":"address"},{"internalType":"address","name":"foundation","type":"address"},{"internalType":"address","name":"sudoswap","type":"address"},{"internalType":"address","name":"elementMarket","type":"address"},{"internalType":"address","name":"nft20Zap","type":"address"},{"internalType":"address","name":"cryptopunks","type":"address"},{"internalType":"address","name":"looksRareV2","type":"address"},{"internalType":"address","name":"routerRewardsDistributor","type":"address"},{"internalType":"address","name":"looksRareRewardsDistributor","type":"address"},{"internalType":"address","name":"looksRareToken","type":"address"},{"internalType":"address","name":"classicFactory","type":"address"},{"internalType":"address","name":"clFactory","type":"address"},{"internalType":"bytes32","name":"pairInitCodeHash","type":"bytes32"},{"internalType":"bytes32","name":"poolInitCodeHash","type":"bytes32"}],"internalType":"struct RouterParameters","name":"params","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AMBNotAccepted","type":"error"},{"inputs":[],"name":"BalanceTooLow","type":"error"},{"inputs":[],"name":"BuyPunkFailed","type":"error"},{"inputs":[],"name":"CLInvalidAmountOut","type":"error"},{"inputs":[],"name":"CLInvalidCaller","type":"error"},{"inputs":[],"name":"CLInvalidSwap","type":"error"},{"inputs":[],"name":"CLTooLittleReceived","type":"error"},{"inputs":[],"name":"CLTooMuchRequested","type":"error"},{"inputs":[],"name":"ClassicInvalidPath","type":"error"},{"inputs":[],"name":"ClassicTooLittleReceived","type":"error"},{"inputs":[],"name":"ClassicTooMuchRequested","type":"error"},{"inputs":[],"name":"ContractLocked","type":"error"},{"inputs":[{"internalType":"uint256","name":"commandIndex","type":"uint256"},{"internalType":"bytes","name":"message","type":"bytes"}],"name":"ExecutionFailed","type":"error"},{"inputs":[],"name":"FromAddressIsNotOwner","type":"error"},{"inputs":[],"name":"InsufficientAMB","type":"error"},{"inputs":[],"name":"InsufficientToken","type":"error"},{"inputs":[],"name":"InvalidBips","type":"error"},{"inputs":[{"internalType":"uint256","name":"commandType","type":"uint256"}],"name":"InvalidCommandType","type":"error"},{"inputs":[],"name":"InvalidOwnerERC1155","type":"error"},{"inputs":[],"name":"InvalidOwnerERC721","type":"error"},{"inputs":[],"name":"InvalidPath","type":"error"},{"inputs":[],"name":"InvalidReserves","type":"error"},{"inputs":[],"name":"InvalidSpender","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[],"name":"SliceOutOfBounds","type":"error"},{"inputs":[],"name":"TransactionDeadlinePassed","type":"error"},{"inputs":[],"name":"UnableToClaim","type":"error"},{"inputs":[],"name":"UnsafeCast","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsSent","type":"event"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"looksRareClaim","type":"bytes"}],"name":"collectRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"commands","type":"bytes"},{"internalType":"bytes[]","name":"inputs","type":"bytes[]"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"commands","type":"bytes"},{"internalType":"bytes[]","name":"inputs","type":"bytes[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":1010,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"34620003ed576001600160401b0362004bdf38819003610300601f8201601f191681019084821190821017620003d7576102809282916040526103003912620003ed57604051610280810191821181831017620003d757610260916040526200006a610300620003f2565b8082526200007a610320620003f2565b60208301526200008c610340620003f2565b60408301526200009e610360620003f2565b6060830152620000b0610380620003f2565b6080830152620000c26103a0620003f2565b60a0830152620000d46103c0620003f2565b60c0830152620000e66103e0620003f2565b60e0830152620000f8610400620003f2565b6101008301526200010b610420620003f2565b6101208301526200011e610440620003f2565b61014083015262000131610460620003f2565b61016083015262000144610480620003f2565b610180830152620001576104a0620003f2565b6101a08301526200016a6104c0620003f2565b6101c08301526200017d6104e0620003f2565b6101e083015262000190610500620003f2565b610200830152620001a3610520620003f2565b610220838101918252610540516102408086019182526103008701518787019081526001600160a01b0395861660a09081526020880151871660809081526040808a0151891660c090815260608b01518a1660e0908152928b01518a16610100908152938b01518a16610120908152908b01518a16610140908152928b01518a16610160908152938b01518a16610180908152908b01518a166101a0908152928b01518a166101c0908152938b01518a166101e0908152908b01518a16610200908152908b01518a16909752918901518816909352918701518616909752919094015183166102805292516102a05251166102c05290516102e052600019600055600180546001600160a01b03191681179055516147d762000408823960805181818161244901526125d0015260a05181818161166301528181611763015281816122c2015281816127e80152613d1e015260c05181612b06015260e051816134bc0152610100518161369c01526101205181612bba0152610140518181816130640152613166015261016051816132740152610180518181816130b701526137c601526101a0518161345301526101c0518161310e01526101e05181612bf801526102005181612b63015261022051816102990152610240518161023d01526102605181610321015261028051818181611c4401528181612054015261441301526102a051818181611c230152818161203301526143f201526102c05181613f6d01526102e05181613f4b01526147d790f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b51906001600160a01b0382168203620003ed5756fe60a0604081815260049182361015610022575b505050361561002057600080fd5b005b600090813560e01c90816301ffc9a714610aaf5750806311c17848146106d4578063150b7a021461064757806324856bc31461057e5780633593564c1461043e578063709a1cc2146101d6578063bc197c81146101125763f23a6e6103610012573461010f5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010f576100ba610bd0565b506100c3610bf3565b506084359067ffffffffffffffff821161010f57506020926100e791369101610b9d565b5050517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b80fd5b503461010f5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010f5761014a610bd0565b50610153610bf3565b5067ffffffffffffffff906044358281116101d2576101759036908601610c37565b50506064358281116101d25761018e9036908601610c37565b505060843591821161010f57506020926101aa91369101610b9d565b5050517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5091903461043a57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104365783833567ffffffffffffffff81116101d25761022a829136908701610b9d565b90818551928392833781018381520390827f00000000000000000000000000000000000000000000000000000000000000005af16102666139a8565b501561040e5780517f70a082310000000000000000000000000000000000000000000000000000000081523084820152907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168383602481845afa9283156104045786936103cf575b5081517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169581019586526020860184905294849186918290899082906040015b03925af19384156103c5577f1e8f03f716bc104bf7d728131967a0c771e85ab54d09c1e2d6ed9e0bc4e2a16c94610398575b5051908152a180f35b6103b790843d86116103be575b6103af818361392d565b810190613bc0565b503861038f565b503d6103a5565b81513d87823e3d90fd5b9092508381813d83116103fd575b6103e7818361392d565b810103126103f957519161035d6102e4565b8580fd5b503d6103dd565b82513d88823e3d90fd5b9050517f7d529919000000000000000000000000000000000000000000000000000000008152fd5b8380fd5b8280fd5b50919060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a5767ffffffffffffffff823581811161057a5761048a9036908501610b9d565b916024359081116103f9576104a29036908601610c37565b929091604435421161055257333014610540576001958654958773ffffffffffffffffffffffffffffffffffffffff88160361051a5750509185949391610511937fffffffffffffffffffffffff00000000000000000000000000000000000000009586339116178755610cc6565b81541617905580f35b517f6f5ffb7e000000000000000000000000000000000000000000000000000000008152fd5b909192935061054f9450610cc6565b80f35b8585517f5bf6f916000000000000000000000000000000000000000000000000000000008152fd5b8480fd5b509190807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a5767ffffffffffffffff823581811161057a576105c99036908501610b9d565b916024359081116103f9576105e19036908601610c37565b929091333014610540576001958654958773ffffffffffffffffffffffffffffffffffffffff88160361051a5750509185949391610511937fffffffffffffffffffffffff00000000000000000000000000000000000000009586339116178755610cc6565b503461010f5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010f5761067f610bd0565b50610688610bf3565b506064359067ffffffffffffffff821161010f57506020926106ac91369101610b9d565b5050517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b50913461043a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a578035906024356044359167ffffffffffffffff92838111610aab5761072d9036908301610b9d565b91909287861394851580610aa1575b610a79578385018886820312610a75578535918211610a7557610760918601613a03565b5060208401359373ffffffffffffffffffffffffffffffffffffffff93848616809603610a755761079091613dc4565b929093602b8510610a4d578335968760601c9760178601968735958660601c936107c58c8662ffffff809760481c1691613eb6565b8633911603610a255715610a1b5750828a105b156107f157505050505050505061054f93503391613e4c565b909192939598506042819a95979a10156000146109d257806017116109ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901937f80000000000000000000000000000000000000000000000000000000000000008110156109ce5761086490613e1f565b97602b85106109a657926108f28b8261089a8f98959661094497602e859f9e9d9c9a013560601c908282109c60481c1691613eb6565b16988815610988576108c16401000276a49d5b83519687946020860152606085019161386a565b908c830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810184528361392d565b8851998a98899788967f128acb0800000000000000000000000000000000000000000000000000000000885233908801526024870152604486015216606484015260a0608484015260a4830190610c68565b03925af1801561097c5761095757505080f35b813d8311610975575b61096a818361392d565b8101031261010f5780f35b503d610960565b505051903d90823e3d90fd5b6108c173fffd8963efd1fc6a506488495d951d5263988d259d6108ad565b858b517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b8b80fd5b5050955050945095809591505484116109f3575061054f9394503391613e4c565b8590517fc980904d000000000000000000000000000000000000000000000000000000008152fd5b9a508983106107d8565b868e517f014e3613000000000000000000000000000000000000000000000000000000008152fd5b5087517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b8980fd5b8288517f19cf368b000000000000000000000000000000000000000000000000000000008152fd5b508882131561073c565b8680fd5b9050833461043a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a57357fffffffff00000000000000000000000000000000000000000000000000000000811680910361043a57602092507f4e2312e0000000000000000000000000000000000000000000000000000000008114908115610b73575b8115610b49575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610b42565b7f150b7a020000000000000000000000000000000000000000000000000000000081149150610b3b565b9181601f84011215610bcb5782359167ffffffffffffffff8311610bcb5760208381860195010111610bcb57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610bcb57565b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610bcb57565b359073ffffffffffffffffffffffffffffffffffffffff82168203610bcb57565b9181601f84011215610bcb5782359167ffffffffffffffff8311610bcb576020808501948460051b010111610bcb57565b919082519283825260005b848110610cb25750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610c73565b919290926080528281036138405791906000905b828210610ce75750505050565b8382959394951015611e575760059282841b60805101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe19182608051360301821215610bcb578160805101359767ffffffffffffffff8911610bcb576020836080510101988036038a13610bcb57606097603f90818989013560f81c166001976020821060001461347c5750601080821015612abf5750600880821015611b8957508061120357505050610d9c908a613e02565b92909860a0856080510101356000146111f957610dd373ffffffffffffffffffffffffffffffffffffffff600154169b5b35613b87565b9960408660805101013585829d927f80000000000000000000000000000000000000000000000000000000000000008314611141575b50959c95505b7f8000000000000000000000000000000000000000000000000000000000000000811015610bcb576042861061113a5730915b86602b11610bcb578d91601783013560601c9083359462ffffff8660601c96610e8773ffffffffffffffffffffffffffffffffffffffff92839260481c16868a613eb6565b16908488101561111e57806401000276a4965b602b60405199604060208c01528160608c015260808b0137600060ab8a015216604088015260a0875260c087019587871067ffffffffffffffff8811176110ef576040948288958688527f128acb080000000000000000000000000000000000000000000000000000000087521660c48a0152868a1060e48a01526101048901521661012487015260a06101448701528160007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4088610f5d610164820182610c68565b0301925af19283156110e35760009283946110a1575b5050610f87931060001461109a5750613e1f565b9a60428510610fc857309085601711610bcb5760177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe991019501949b610e0f565b50985098606091969597949392509160805101013511611070575b1580611043575b610ffc57506001019291929092610cda565b9061103f60409283519384937f2c4029e9000000000000000000000000000000000000000000000000000000008552600485015260248401526044830190610c68565b0390fd5b507f8000000000000000000000000000000000000000000000000000000000000000828501351615610fea565b60046040517f4566b5a8000000000000000000000000000000000000000000000000000000008152fd5b9050613e1f565b91929093506040843d6040116110db575b816110bf6040938661392d565b8101031261010f57505160e092909201519190610f8738610f73565b3d91506110b2565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8073fffd8963efd1fc6a506488495d951d5263988d2596610e9a565b8b91610e42565b6014919250106111cf576020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301523560601c5afa9081156110e35760009161119d575b503880610e09565b906020823d6020116111c7575b816111b76020938361392d565b8101031261010f57505138611195565b3d91506111aa565b60046040517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b610dd3309b610dcd565b6001819d9493969d9b9897959a999b146000146114c75750508161122992939450613e02565b9060a0846080510101356000146114bd5761125d73ffffffffffffffffffffffffffffffffffffffff600154169335613b87565b916060856080510101356000557f80000000000000000000000000000000000000000000000000000000000000006040866080510101351015610bcb576112ab604086608051010135613e1f565b602b83106111cf57813592601783013560601c9586928560601c96879660481c62ffffff166112db908689613eb6565b73ffffffffffffffffffffffffffffffffffffffff16938786106000149673ffffffffffffffffffffffffffffffffffffffff80956000956113766113ca9560409c6114a2576401000276a4935b856113448f51986040948a956020870152606086019161386a565b91168e830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810186528561392d565b8a519b8c9a8b998a987f128acb08000000000000000000000000000000000000000000000000000000008a52166004890152106024870152604486015216606484015260a0608484015260a4830190610c68565b03925af19182156110e3576000918293611464575b50604093101561145457506113f390613e1f565b915b6080510101350361142a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000555b610fe3565b60046040517f75e2f0ae000000000000000000000000000000000000000000000000000000008152fd5b61145e9150613e1f565b916113f5565b9250906040833d60401161149a575b816114806040938361392d565b8101031261010f57508151602090920151919060406113df565b3d9150611473565b73fffd8963efd1fc6a506488495d951d5263988d2593611329565b61125d3093610dcd565b6002810361151157505050611425925073ffffffffffffffffffffffffffffffffffffffff6001541661150a604060608560805101013594608051010135613b87565b9135613d03565b9193916003810361188357505060805181018084019390604090850312610bcb57823567ffffffffffffffff8111610bcb5782608051010192606084860312610bcb57604051946060860186811067ffffffffffffffff8211176110ef57604052602085013567ffffffffffffffff8111610bcb57850160208201809882011215610bcb576020810135906115a5826139d8565b926115b3604051948561392d565b8284526040602085019360071b830101918a8311610bcb57604001925b82841061181e575050505085526115e960408501610c16565b956020860196875260606040870195013585526040846080510101359067ffffffffffffffff8211610bcb57602061162a9261163096608051010101613a03565b50613de5565b909173ffffffffffffffffffffffffffffffffffffffff600154169473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b15610bcb5794929391906040519586947f2a2d80d100000000000000000000000000000000000000000000000000000000865260048601526060602486015260c48501935193606060648701528451809152602060e487019501906000905b8082106117a557505050946117499285949273ffffffffffffffffffffffffffffffffffffffff600098511660848701525160a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85840301604486015261386a565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156110e357611796575b50610fe3565b61179f906138a9565b38611790565b9197965091929394602060806001928a5173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff848201511684830152606065ffffffffffff918260408201511660408501520151166060820152019801920188969795949392916116e3565b608060208584030112610bcb57602060809160405161183c816138bd565b61184587610c16565b8152611852838801610c16565b83820152611862604088016139f0565b6040820152611873606088016139f0565b60608201528152019301926115d0565b600495509193508482036119f25750509091604060606118a98286608051010135613b87565b608051909501013573ffffffffffffffffffffffffffffffffffffffff9081169335168061191f5750479283106118f9575050806118e9575b5050610fe3565b6118f291614681565b38806118e2565b517fbb9278b6000000000000000000000000000000000000000000000000000000008152fd5b9391908051937f70a082310000000000000000000000000000000000000000000000000000000085523083860152602085602481895afa9485156119e7576000956119b3575b50841061198d5750508161197c575b505050610fe3565b611985926146ef565b388080611974565b517f675cae38000000000000000000000000000000000000000000000000000000008152fd5b90946020823d6020116119df575b816119ce6020938361392d565b8101031261010f5750519338611965565b3d91506119c1565b82513d6000823e3d90fd5b8103611a1f57506114259250611a18604060608460805101013593608051010135613b87565b9035613bd8565b90919060068103611b59575060805101606081013590604090611a4490820135613b87565b9282158015611b4e575b611b26573573ffffffffffffffffffffffffffffffffffffffff169384611a8a5750506114259250611a836127109147613cb7565b0490614681565b8151907f70a082310000000000000000000000000000000000000000000000000000000082523090820152602081602481885afa918215611b1c5750600091611ae8575b50611ae161142594939261271092613cb7565b04916146ef565b906020823d602011611b14575b81611b026020938361392d565b8101031261010f575051611ae1611ace565b3d9150611af5565b513d6000823e3d90fd5b8482517fdeaa01e6000000000000000000000000000000000000000000000000000000008152fd5b506127108311611a4e565b83602491604051917fd76a1e9e000000000000000000000000000000000000000000000000000000008352820152fd5b819d969d9b989794959a999b93929314600014611e9057505050604091611bb883836080510101359185613e02565b92909460a082608051010135600014611e8657611bee73ffffffffffffffffffffffffffffffffffffffff600154169135613b87565b908615611e5757611bfe85614039565b8760011015611e5757611c20611c6891611c1a60208901614039565b90614168565b907f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614067565b938481611e3d575b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860193868511611e0e57611cc494611cc973ffffffffffffffffffffffffffffffffffffffff9687928a85614029565b614039565b16948651947f70a082310000000000000000000000000000000000000000000000000000000091828752841693600499858b89015260249460208987818d5afa988915611e0357600099611dce575b509160209695949391611d2a936141e1565b8751968793849283528a8301525afa928315611dc357600093611d8e575b50906060611d5c926080510101359261405a565b10611d68575050610fe3565b517f689100ae000000000000000000000000000000000000000000000000000000008152fd5b90926020823d602011611dbb575b81611da96020938361392d565b8101031261010f575051916060611d48565b3d9150611d9c565b84513d6000823e3d90fd5b90986020823d602011611dfb575b81611de96020938361392d565b8101031261010f575051976020611d18565b3d9150611ddc565b8b513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b611e4f92611e4a88614039565b613e4c565b388084611c70565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b611bee3091610dcd565b919492939160098103612271575050611ea99082613e02565b608051840160a001351561226757611eda73ffffffffffffffffffffffffffffffffffffffff600154169335613b87565b92611ee4836139d8565b95611ef2604051978861392d565b83875283901b820160208701368211610bcb5783905b82821061224f575050506000946002875110612225576040816080510101359680517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611e0e5790815b611fb257505060805101606001358611611f88578215611e57576114259585611f8392611e4a85614039565b6141e1565b60046040517fc8ca61e7000000000000000000000000000000000000000000000000000000008152fd5b90977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89019750888811611e0e5773ffffffffffffffffffffffffffffffffffffffff6120026120789984613da3565b511661202e73ffffffffffffffffffffffffffffffffffffffff6120268c86613da3565b511682614168565b819a917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614067565b90604051907f0902f1ac00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff87165afa9a8b156110e357600092839c6121dc575b5073ffffffffffffffffffffffffffffffffffffffff16036121c2576dffffffffffffffffffffffffffff8091169916905b98801580156121ba575b612190578261211a91613cb7565b916103e892838102938185041490151715611e0e576121389161405a565b6103e590818102918183041490151715611e0e5761215591613cca565b60018101809111611e0e57978015611e0e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019081611f57565b60046040517f7b9c8916000000000000000000000000000000000000000000000000000000008152fd5b50811561210c565b6dffffffffffffffffffffffffffff998a16991690612102565b612215919c5073ffffffffffffffffffffffffffffffffffffffff935060603d811161221e575b61220d818361392d565b8101906141ab565b509b90926120d0565b503d612203565b60046040517f20db8267000000000000000000000000000000000000000000000000000000008152fd5b6020809161225c84610c16565b815201910190611f08565b611eda3093610dcd565b92945091600a81036123d75750608051830160e081013581019460208087013594509092916122a4919087030184613db7565b116111cf5773ffffffffffffffffffffffffffffffffffffffff93847f00000000000000000000000000000000000000000000000000000000000000001692856001541691843b15610bcb5760409587875198899687967f2b67b570000000000000000000000000000000000000000000000000000000008852600488015261232c90610c16565b166024860152808883608051010161234390610c16565b16604486015265ffffffffffff808360805101606001612362906139f0565b1660648701528260805101608001612379906139f0565b166084860152816080510160a00161239090610c16565b1660a48501526080510160c0013560c484015261010060e48401526123bc91610104840191870161386a565b03815a6000948591f1908115611b1c57506117965750610fe3565b600b81036125a1575050506123f6604080926080510101359235613b87565b91807f80000000000000000000000000000000000000000000000000000000000000008103612571575050475b8061243057505050610fe3565b73ffffffffffffffffffffffffffffffffffffffff90817f000000000000000000000000000000000000000000000000000000000000000016803b15610bcb578351927fd0e30db0000000000000000000000000000000000000000000000000000000008452600493600081868187875af1801561256657612557575b5030908616036124bf575b5050611974565b61251e9460006020948651978895869485937fa9059cbb00000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af1908115611b1c5750612538575b808080806124b8565b6125509060203d6020116103be576103af818361392d565b503861252f565b612560906138a9565b386124ad565b86513d6000823e3d90fd5b47101561242357600482517fbb9278b6000000000000000000000000000000000000000000000000000000008152fd5b600c810361273157505050906125b79035613b87565b9073ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001660408051937f70a08231000000000000000000000000000000000000000000000000000000008552600430818701526024916020878481885afa968715611dc3576000976126fd575b506080510183013586106126d65785612659575b50505050505050610fe3565b833b15610bcb57600091869183855196879485937f2e1a7d4d0000000000000000000000000000000000000000000000000000000085528401525af1908115611b1c57506126c7575b5030908316036126b7575b808080808061264d565b6126c091614681565b38806126ad565b6126d0906138a9565b386126a2565b82517fbb9278b6000000000000000000000000000000000000000000000000000000008152fd5b90966020823d602011612729575b816127186020938361392d565b8101031261010f5750519583612639565b3d915061270b565b600d810361298c575082608051010191602083019360208260805101850312610bcb573567ffffffffffffffff8111610bcb57849160805101019182011215610bcb57602081013590612783826139d8565b936040936127938551968761392d565b838652602086019285849560071b820101928311610bcb578501925b82841061292a575050505073ffffffffffffffffffffffffffffffffffffffff90816001541684519060005b8281106128be57505050817f00000000000000000000000000000000000000000000000000000000000000001691823b15610bcb5783517f0d58b1db000000000000000000000000000000000000000000000000000000008152602060048201529451602486018190528592604484019290916000915b81831061287a57505050509181600081819503925af1908115611b1c57506117965750610fe3565b91938395506080602091846060600195975182815116845282868201511686850152828d820151168d85015201511660608201520195019301909187949392612852565b81856128ca838a613da3565b51511603612901577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e0e576001016127db565b600486517fe7002877000000000000000000000000000000000000000000000000000000008152fd5b608060208584030112610bcb5760206080918751612947816138bd565b61295087610c16565b815261295d838801610c16565b8382015261296c898801610c16565b8982015261297c60608801610c16565b60608201528152019301926127af565b9294505050600e8103612a8e57506040918251907f70a0823100000000000000000000000000000000000000000000000000000000825260208260248173ffffffffffffffffffffffffffffffffffffffff806004983516888301528886608051010135165afa918215611dc357600092612a59575b5060805101606001351180159290612a1b575050610fe3565b517fa3281672000000000000000000000000000000000000000000000000000000006020820152908152909150612a51816138f5565b9038806118e2565b90916020823d602011612a86575b81612a746020938361392d565b8101031261010f575051906060612a02565b3d9150612a67565b602490604051907fd76a1e9e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9150915060189b95939897999692949b80831060001461304e57508103612b35575050506000925090612af3839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b90610fe3565b60118103612b8c575050506000925090612b50839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b60128103612be3575050506000925090612ba7839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b919392509060138103612d49575050909150357f0000000000000000000000000000000000000000000000000000000000000000916040600080825160208101907f8264fe98000000000000000000000000000000000000000000000000000000008252602487818301528152612c5981613911565b5190606086608051010135885af192612c706139a8565b948415612d0f578273ffffffffffffffffffffffffffffffffffffffff612c9e921694608051010135613b87565b90833b15610bcb5782517f8b72a2ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820152916000908390604490829084905af1908115611b1c57506117965750610fe3565b505091925050517fae9bdf0000000000000000000000000000000000000000000000000000000000602082015260048152612b2f816138f5565b60158103612e5a57505090604091828051917f6352211e0000000000000000000000000000000000000000000000000000000083526020836024816004976060816080510101358983015273ffffffffffffffffffffffffffffffffffffffff968791608051010135165afa928315612e4f57600093612e10575b5081903516911614918215612dda575050610fe3565b517f7dbe7e89000000000000000000000000000000000000000000000000000000006020820152908152909150612a51816138f5565b6020939193813d602011612e47575b81612e2c6020938361392d565b810103126101d2575190828216820361010f57509181612dc4565b3d9150612e1f565b85513d6000823e3d90fd5b60168103612f815750506040918251907efdd58e00000000000000000000000000000000000000000000000000000000825260208280612ecc60049660608660805101013590358884016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b038173ffffffffffffffffffffffffffffffffffffffff8886608051010135165afa918215611dc357600092612f4c575b5060809081510101351191821592612f16575050610fe3565b517f483a6929000000000000000000000000000000000000000000000000000000006020820152908152909150612a51816138f5565b90916020823d602011612f79575b81612f676020938361392d565b8101031261010f575051906080612efd565b3d9150612f5a565b909290601714612f92575050610fe3565b60409073ffffffffffffffffffffffffffffffffffffffff612fba8383608051010135613b87565b93351692833b15610bcb5782517f42842e0e00000000000000000000000000000000000000000000000000000000815260805130600483015273ffffffffffffffffffffffffffffffffffffffff909216602482015291016060013560448201529160009083908183816064810103925af1908115611b1c575061303f575b806118e2565b613048906138a9565b38613039565b939693821415905061308957505050612b2f92507f000000000000000000000000000000000000000000000000000000000000000091613a4a565b601981036130e05750505060009250906130a4839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b601a81036131375750505060009250906130fb839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b601b810361325e57505050600061314f819284613de5565b9390604094818651928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af19182916131926139a8565b926131a0575b505090610fe3565b73ffffffffffffffffffffffffffffffffffffffff6080838151010135166131cf606084608051010135613b87565b908251906131dc826138d9565b60008252803b15610bcb5761323894600080948651978895869485937ff242432a00000000000000000000000000000000000000000000000000000000855260a060c08360805101013592608051010135903060048701613b42565b03925af1908115611b1c575061324f575b80613198565b613258906138a9565b38613249565b91949091601c810361329957505050612b2f92507f000000000000000000000000000000000000000000000000000000000000000091613a4a565b9193929091601d81036134225750506060816080510101359060409173ffffffffffffffffffffffffffffffffffffffff6132da8484608051010135613b87565b9435168351947efdd58e0000000000000000000000000000000000000000000000000000000086526004936020878061333987308a84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0381865afa968715612566576000976133ed575b50608090815101013586106133c5578451613367816138d9565b60008152823b15610bcb576000946133af86928851998a97889687957ff242432a00000000000000000000000000000000000000000000000000000000875230908701613b42565b03925af1908115611b1c57506117965750610fe3565b8385517f675cae38000000000000000000000000000000000000000000000000000000008152fd5b90966020823d60201161341a575b816134086020938361392d565b8101031261010f57505195608061334d565b3d91506133fb565b929450925050601e8103612a8e575081613440600093928493613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b9499989a92506020819d9792969d989498146000146134e557505050505050806134a96000938493613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b60219080820361365c5750505050909161350a6135028686613dc4565b969095613de5565b929061354c60409788519760208901997f24856bc3000000000000000000000000000000000000000000000000000000008b5260248a0152606489019161386a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc878203016044880152818152602082818301951b82010195856000915b8483106135de57505050505050505091816135d0600094938594037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261392d565b519082305af1612b2f6139a8565b90919293949596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085820301885288358284360301811215610bcb578301906020823592019167ffffffffffffffff8111610bcb578036038313610bcb5761364c60209283928b9561386a565b9a0198019695949301919061358a565b9297509350935060228195929514600014612a8e5750359060408093608051010135906000906002831015613814575050808491156000146137bf5750507f0000000000000000000000000000000000000000000000000000000000000000915b6000908051927f095ea7b300000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff600495168585015260206024937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858701526044809682855af19081601f3d1188600051141615166137b2575b50156137575750505050610fe3565b91600e7f415050524f56455f4641494c45440000000000000000000000000000000000009260206064969551957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b3b153d1715905038613748565b036137eb577f0000000000000000000000000000000000000000000000000000000000000000916136bd565b600482517f5461585f000000000000000000000000000000000000000000000000000000008152fd5b602492507f4e487b71000000000000000000000000000000000000000000000000000000008252600452fd5b60046040517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b67ffffffffffffffff81116110ef57604052565b6080810190811067ffffffffffffffff8211176110ef57604052565b6020810190811067ffffffffffffffff8211176110ef57604052565b6040810190811067ffffffffffffffff8211176110ef57604052565b6060810190811067ffffffffffffffff8211176110ef57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176110ef57604052565b67ffffffffffffffff81116110ef57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d156139d3573d906139b98261396e565b916139c7604051938461392d565b82523d6000602084013e565b606090565b67ffffffffffffffff81116110ef5760051b60200190565b359065ffffffffffff82168203610bcb57565b81601f82011215610bcb57803590613a1a8261396e565b92613a28604051948561392d565b82845260208383010111610bcb57816000926020809301838601378301015290565b919290613a579083613de5565b90938460405195869384378201906000958693838580955203918635905af192613a7f6139a8565b9284613a89575050565b73ffffffffffffffffffffffffffffffffffffffff606082013516613ab16040830135613b87565b91813b15610436576040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93909316602484015260800135604483015290919081908390606490829084905af1908115613b365750613b2b5750565b613b34906138a9565b565b604051903d90823e3d90fd5b9192613b8495949160a09473ffffffffffffffffffffffffffffffffffffffff8092168552166020840152604083015260608201528160808201520190610c68565b90565b73ffffffffffffffffffffffffffffffffffffffff9080821660018103613bb15750506001541690565b909150600203613b8457503090565b90816020910312610bcb57518015158103610bcb5790565b9092919073ffffffffffffffffffffffffffffffffffffffff1680613c025750613b349192614681565b7f80000000000000000000000000000000000000000000000000000000000000008214613c35575b92613b3492936146ef565b9050604051927f70a08231000000000000000000000000000000000000000000000000000000008452306004850152602084602481855afa9384156110e357600094613c84575b509290613c2a565b6020813d8211613caf575b81613c9c6020938361392d565b8101031261057a57519350613b34613c7c565b3d9150613c8f565b81810292918115918404141715611e0e57565b8115613cd4570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b919273ffffffffffffffffffffffffffffffffffffffff91827f00000000000000000000000000000000000000000000000000000000000000001693843b15610bcb5760009484869281608496816040519b8c9a8b997f36c78516000000000000000000000000000000000000000000000000000000008b521660048a01521660248801521660448601521660648401525af180156110e357613b2b5750565b8051821015611e575760209160051b010190565b91908201809211611e0e57565b918235830191613dde602084359581860195030185613db7565b116111cf57565b916020830135830191613dde602084359581860195030185613db7565b916060830135830191613dde602084359581860195030185613db7565b7f80000000000000000000000000000000000000000000000000000000000000008114611e0e5760000390565b92919073ffffffffffffffffffffffffffffffffffffffff8082163003613e78575050613b3492613bd8565b8084959411613e8c57613b34941692613d03565b60046040517fc4bd89a9000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff9283831684831611614021575b62ffffff90846040519481602087019516855216604085015216606083015260608252608082019082821067ffffffffffffffff8311176110ef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8061401a91836040528451902093613fed60a08201957f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000088917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6081018452018261392d565b5190201690565b909190613ed8565b9190811015611e575760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff81168103610bcb5790565b91908203918211611e0e57565b9173ffffffffffffffffffffffffffffffffffffffff9361401a916040519060208201927fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809260601b16845260601b166034820152602881526140ca81613911565b51902061413c604051938492602084019687917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261392d565b73ffffffffffffffffffffffffffffffffffffffff828116908216101561418c5791565b9091565b51906dffffffffffffffffffffffffffff82168203610bcb57565b90816060910312610bcb576141bf81614190565b9160406141ce60208401614190565b92015163ffffffff81168103610bcb5790565b9260028210614657578115611e57576141f984614039565b9160019481861015611e575791614217602094611c1a868601614039565b50926000935b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018510614250575050505050505050565b61425e611cc4868685614029565b9261426f611cc48a88018786614029565b936040908151957f0902f1ac00000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff80941694606092600493808a86818b5afa998a1561256657908d9594939291600091829c614631575b50508780916dffffffffffffffffffffffffffff8091169c16921692168214998a60001461462b575b8651958680947f70a082310000000000000000000000000000000000000000000000000000000082528b8883015260249889915afa928315614620578e6000946145ef575b5050808303918115938480156145e7575b6145bf57826103e58086029586041491141715614592576143779083613cb7565b926103e88083029283041417156145655761439c929161439691613db7565b90613cca565b971561455d57600097905b898b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe82018110156145515791611c1a611cc46143ed9360026144379c9601908d614029565b8198917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614067565b965b988551918d83019367ffffffffffffffff948481108682111761452457885260008452813b15610bcb5760008a936144b782968b519c8d97889687957f022c0d9f0000000000000000000000000000000000000000000000000000000087528d8701528d860152166044840152608060648401526084830190610c68565b03925af18015611dc357908d9695949392916144dc575b50505050509401939161421d565b9091929380959650116144f857505052879038808080806144ce565b6041907f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b876041887f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b5050508b956000614439565b6000906143a7565b856011867f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b866011877f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b8689517f7b9c8916000000000000000000000000000000000000000000000000000000008152fd5b508115614356565b8181959293953d8311614619575b614607818361392d565b8101031261010f57505191388e614345565b503d6145fd565b87513d6000823e3d90fd5b90614300565b899c50899250908161464e92903d1061221e5761220d818361392d565b509b90916142d7565b60046040517f394060ac000000000000000000000000000000000000000000000000000000008152fd5b600080809381935af11561469157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152fd5b91604460209260009273ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000008452166004830152602482015282855af19081601f3d116001600051141615166147bd575b501561475f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152fd5b3b153d171590503861475756fea164736f6c6343000811000a","opcodes":"CALLVALUE PUSH3 0x3ED JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH3 0x4BDF CODESIZE DUP2 SWAP1 SUB PUSH2 0x300 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 DUP5 DUP3 GT SWAP1 DUP3 LT OR PUSH3 0x3D7 JUMPI PUSH2 0x280 SWAP3 DUP3 SWAP2 PUSH1 0x40 MSTORE PUSH2 0x300 CODECOPY SLT PUSH3 0x3ED JUMPI PUSH1 0x40 MLOAD PUSH2 0x280 DUP2 ADD SWAP2 DUP3 GT DUP2 DUP4 LT OR PUSH3 0x3D7 JUMPI PUSH2 0x260 SWAP2 PUSH1 0x40 MSTORE PUSH3 0x6A PUSH2 0x300 PUSH3 0x3F2 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH3 0x7A PUSH2 0x320 PUSH3 0x3F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0x8C PUSH2 0x340 PUSH3 0x3F2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH3 0x9E PUSH2 0x360 PUSH3 0x3F2 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH3 0xB0 PUSH2 0x380 PUSH3 0x3F2 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH3 0xC2 PUSH2 0x3A0 PUSH3 0x3F2 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH3 0xD4 PUSH2 0x3C0 PUSH3 0x3F2 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH3 0xE6 PUSH2 0x3E0 PUSH3 0x3F2 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH3 0xF8 PUSH2 0x400 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH3 0x10B PUSH2 0x420 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH3 0x11E PUSH2 0x440 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE PUSH3 0x131 PUSH2 0x460 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE PUSH3 0x144 PUSH2 0x480 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x180 DUP4 ADD MSTORE PUSH3 0x157 PUSH2 0x4A0 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x1A0 DUP4 ADD MSTORE PUSH3 0x16A PUSH2 0x4C0 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x1C0 DUP4 ADD MSTORE PUSH3 0x17D PUSH2 0x4E0 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x1E0 DUP4 ADD MSTORE PUSH3 0x190 PUSH2 0x500 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x200 DUP4 ADD MSTORE PUSH3 0x1A3 PUSH2 0x520 PUSH3 0x3F2 JUMP JUMPDEST PUSH2 0x220 DUP4 DUP2 ADD SWAP2 DUP3 MSTORE PUSH2 0x540 MLOAD PUSH2 0x240 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE PUSH2 0x300 DUP8 ADD MLOAD DUP8 DUP8 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP9 ADD MLOAD DUP8 AND PUSH1 0x80 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP11 ADD MLOAD DUP10 AND PUSH1 0xC0 SWAP1 DUP2 MSTORE PUSH1 0x60 DUP12 ADD MLOAD DUP11 AND PUSH1 0xE0 SWAP1 DUP2 MSTORE SWAP3 DUP12 ADD MLOAD DUP11 AND PUSH2 0x100 SWAP1 DUP2 MSTORE SWAP4 DUP12 ADD MLOAD DUP11 AND PUSH2 0x120 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND PUSH2 0x140 SWAP1 DUP2 MSTORE SWAP3 DUP12 ADD MLOAD DUP11 AND PUSH2 0x160 SWAP1 DUP2 MSTORE SWAP4 DUP12 ADD MLOAD DUP11 AND PUSH2 0x180 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND PUSH2 0x1A0 SWAP1 DUP2 MSTORE SWAP3 DUP12 ADD MLOAD DUP11 AND PUSH2 0x1C0 SWAP1 DUP2 MSTORE SWAP4 DUP12 ADD MLOAD DUP11 AND PUSH2 0x1E0 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND PUSH2 0x200 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND SWAP1 SWAP8 MSTORE SWAP2 DUP10 ADD MLOAD DUP9 AND SWAP1 SWAP4 MSTORE SWAP2 DUP8 ADD MLOAD DUP7 AND SWAP1 SWAP8 MSTORE SWAP2 SWAP1 SWAP5 ADD MLOAD DUP4 AND PUSH2 0x280 MSTORE SWAP3 MLOAD PUSH2 0x2A0 MSTORE MLOAD AND PUSH2 0x2C0 MSTORE SWAP1 MLOAD PUSH2 0x2E0 MSTORE PUSH1 0x0 NOT PUSH1 0x0 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 OR SWAP1 SSTORE MLOAD PUSH2 0x47D7 PUSH3 0x408 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2449 ADD MSTORE PUSH2 0x25D0 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1663 ADD MSTORE DUP2 DUP2 PUSH2 0x1763 ADD MSTORE DUP2 DUP2 PUSH2 0x22C2 ADD MSTORE DUP2 DUP2 PUSH2 0x27E8 ADD MSTORE PUSH2 0x3D1E ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x2B06 ADD MSTORE PUSH1 0xE0 MLOAD DUP2 PUSH2 0x34BC ADD MSTORE PUSH2 0x100 MLOAD DUP2 PUSH2 0x369C ADD MSTORE PUSH2 0x120 MLOAD DUP2 PUSH2 0x2BBA ADD MSTORE PUSH2 0x140 MLOAD DUP2 DUP2 DUP2 PUSH2 0x3064 ADD MSTORE PUSH2 0x3166 ADD MSTORE PUSH2 0x160 MLOAD DUP2 PUSH2 0x3274 ADD MSTORE PUSH2 0x180 MLOAD DUP2 DUP2 DUP2 PUSH2 0x30B7 ADD MSTORE PUSH2 0x37C6 ADD MSTORE PUSH2 0x1A0 MLOAD DUP2 PUSH2 0x3453 ADD MSTORE PUSH2 0x1C0 MLOAD DUP2 PUSH2 0x310E ADD MSTORE PUSH2 0x1E0 MLOAD DUP2 PUSH2 0x2BF8 ADD MSTORE PUSH2 0x200 MLOAD DUP2 PUSH2 0x2B63 ADD MSTORE PUSH2 0x220 MLOAD DUP2 PUSH2 0x299 ADD MSTORE PUSH2 0x240 MLOAD DUP2 PUSH2 0x23D ADD MSTORE PUSH2 0x260 MLOAD DUP2 PUSH2 0x321 ADD MSTORE PUSH2 0x280 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1C44 ADD MSTORE DUP2 DUP2 PUSH2 0x2054 ADD MSTORE PUSH2 0x4413 ADD MSTORE PUSH2 0x2A0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1C23 ADD MSTORE DUP2 DUP2 PUSH2 0x2033 ADD MSTORE PUSH2 0x43F2 ADD MSTORE PUSH2 0x2C0 MLOAD DUP2 PUSH2 0x3F6D ADD MSTORE PUSH2 0x2E0 MLOAD DUP2 PUSH2 0x3F4B ADD MSTORE PUSH2 0x47D7 SWAP1 RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH3 0x3ED JUMPI JUMP INVALID PUSH1 0xA0 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x22 JUMPI JUMPDEST POP POP POP CALLDATASIZE ISZERO PUSH2 0x20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xAAF JUMPI POP DUP1 PUSH4 0x11C17848 EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x24856BC3 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0x3593564C EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x709A1CC2 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x112 JUMPI PUSH4 0xF23A6E61 SUB PUSH2 0x12 JUMPI CALLVALUE PUSH2 0x10F JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x10F JUMPI PUSH2 0xBA PUSH2 0xBD0 JUMP JUMPDEST POP PUSH2 0xC3 PUSH2 0xBF3 JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x10F JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xE7 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xB9D JUMP JUMPDEST POP POP MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x10F JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x10F JUMPI PUSH2 0x14A PUSH2 0xBD0 JUMP JUMPDEST POP PUSH2 0x153 PUSH2 0xBF3 JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1D2 JUMPI PUSH2 0x175 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST POP POP PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1D2 JUMPI PUSH2 0x18E SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST POP POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x10F JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0x1AA SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xB9D JUMP JUMPDEST POP POP MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 CALLVALUE PUSH2 0x43A JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x436 JUMPI DUP4 DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1D2 JUMPI PUSH2 0x22A DUP3 SWAP2 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP1 DUP2 DUP6 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP4 DUP2 MSTORE SUB SWAP1 DUP3 PUSH32 0x0 GAS CALL PUSH2 0x266 PUSH2 0x39A8 JUMP JUMPDEST POP ISZERO PUSH2 0x40E JUMPI DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP5 DUP3 ADD MSTORE SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP4 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x404 JUMPI DUP7 SWAP4 PUSH2 0x3CF JUMPI JUMPDEST POP DUP2 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP6 DUP2 ADD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD DUP5 SWAP1 MSTORE SWAP5 DUP5 SWAP2 DUP7 SWAP2 DUP3 SWAP1 DUP10 SWAP1 DUP3 SWAP1 PUSH1 0x40 ADD JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x3C5 JUMPI PUSH32 0x1E8F03F716BC104BF7D728131967A0C771E85AB54D09C1E2D6ED9E0BC4E2A16C SWAP5 PUSH2 0x398 JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST PUSH2 0x3B7 SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x3BE JUMPI JUMPDEST PUSH2 0x3AF DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3BC0 JUMP JUMPDEST POP CODESIZE PUSH2 0x38F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A5 JUMP JUMPDEST DUP2 MLOAD RETURNDATASIZE DUP8 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP3 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3FD JUMPI JUMPDEST PUSH2 0x3E7 DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x3F9 JUMPI MLOAD SWAP2 PUSH2 0x35D PUSH2 0x2E4 JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x3DD JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP MLOAD PUSH32 0x7D52991900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x57A JUMPI PUSH2 0x48A SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x3F9 JUMPI PUSH2 0x4A2 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x44 CALLDATALOAD TIMESTAMP GT PUSH2 0x552 JUMPI CALLER ADDRESS EQ PUSH2 0x540 JUMPI PUSH1 0x1 SWAP6 DUP7 SLOAD SWAP6 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SUB PUSH2 0x51A JUMPI POP POP SWAP2 DUP6 SWAP5 SWAP4 SWAP2 PUSH2 0x511 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP6 DUP7 CALLER SWAP2 AND OR DUP8 SSTORE PUSH2 0xCC6 JUMP JUMPDEST DUP2 SLOAD AND OR SWAP1 SSTORE DUP1 RETURN JUMPDEST MLOAD PUSH32 0x6F5FFB7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH2 0x54F SWAP5 POP PUSH2 0xCC6 JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP6 DUP6 MLOAD PUSH32 0x5BF6F91600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x57A JUMPI PUSH2 0x5C9 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x3F9 JUMPI PUSH2 0x5E1 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 CALLER ADDRESS EQ PUSH2 0x540 JUMPI PUSH1 0x1 SWAP6 DUP7 SLOAD SWAP6 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SUB PUSH2 0x51A JUMPI POP POP SWAP2 DUP6 SWAP5 SWAP4 SWAP2 PUSH2 0x511 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP6 DUP7 CALLER SWAP2 AND OR DUP8 SSTORE PUSH2 0xCC6 JUMP JUMPDEST POP CALLVALUE PUSH2 0x10F JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x10F JUMPI PUSH2 0x67F PUSH2 0xBD0 JUMP JUMPDEST POP PUSH2 0x688 PUSH2 0xBF3 JUMP JUMPDEST POP PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x10F JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0x6AC SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xB9D JUMP JUMPDEST POP POP MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x43A JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0xAAB JUMPI PUSH2 0x72D SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP2 SWAP1 SWAP3 DUP8 DUP7 SGT SWAP5 DUP6 ISZERO DUP1 PUSH2 0xAA1 JUMPI JUMPDEST PUSH2 0xA79 JUMPI DUP4 DUP6 ADD DUP9 DUP7 DUP3 SUB SLT PUSH2 0xA75 JUMPI DUP6 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0xA75 JUMPI PUSH2 0x760 SWAP2 DUP7 ADD PUSH2 0x3A03 JUMP JUMPDEST POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP7 AND DUP1 SWAP7 SUB PUSH2 0xA75 JUMPI PUSH2 0x790 SWAP2 PUSH2 0x3DC4 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x2B DUP6 LT PUSH2 0xA4D JUMPI DUP4 CALLDATALOAD SWAP7 DUP8 PUSH1 0x60 SHR SWAP8 PUSH1 0x17 DUP7 ADD SWAP7 DUP8 CALLDATALOAD SWAP6 DUP7 PUSH1 0x60 SHR SWAP4 PUSH2 0x7C5 DUP13 DUP7 PUSH3 0xFFFFFF DUP1 SWAP8 PUSH1 0x48 SHR AND SWAP2 PUSH2 0x3EB6 JUMP JUMPDEST DUP7 CALLER SWAP2 AND SUB PUSH2 0xA25 JUMPI ISZERO PUSH2 0xA1B JUMPI POP DUP3 DUP11 LT JUMPDEST ISZERO PUSH2 0x7F1 JUMPI POP POP POP POP POP POP POP POP PUSH2 0x54F SWAP4 POP CALLER SWAP2 PUSH2 0x3E4C JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 SWAP9 POP PUSH1 0x42 DUP2 SWAP11 SWAP6 SWAP8 SWAP11 LT ISZERO PUSH1 0x0 EQ PUSH2 0x9D2 JUMPI DUP1 PUSH1 0x17 GT PUSH2 0x9CE JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD SWAP4 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x9CE JUMPI PUSH2 0x864 SWAP1 PUSH2 0x3E1F JUMP JUMPDEST SWAP8 PUSH1 0x2B DUP6 LT PUSH2 0x9A6 JUMPI SWAP3 PUSH2 0x8F2 DUP12 DUP3 PUSH2 0x89A DUP16 SWAP9 SWAP6 SWAP7 PUSH2 0x944 SWAP8 PUSH1 0x2E DUP6 SWAP16 SWAP15 SWAP14 SWAP13 SWAP11 ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 DUP3 DUP3 LT SWAP13 PUSH1 0x48 SHR AND SWAP2 PUSH2 0x3EB6 JUMP JUMPDEST AND SWAP9 DUP9 ISZERO PUSH2 0x988 JUMPI PUSH2 0x8C1 PUSH5 0x1000276A4 SWAP14 JUMPDEST DUP4 MLOAD SWAP7 DUP8 SWAP5 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP2 PUSH2 0x386A JUMP JUMPDEST SWAP1 DUP13 DUP4 ADD MSTORE SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0x392D JUMP JUMPDEST DUP9 MLOAD SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH32 0x128ACB0800000000000000000000000000000000000000000000000000000000 DUP9 MSTORE CALLER SWAP1 DUP9 ADD MSTORE PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD MSTORE AND PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x97C JUMPI PUSH2 0x957 JUMPI POP POP DUP1 RETURN JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x975 JUMPI JUMPDEST PUSH2 0x96A DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI DUP1 RETURN JUMPDEST POP RETURNDATASIZE PUSH2 0x960 JUMP JUMPDEST POP POP MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8C1 PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 SWAP14 PUSH2 0x8AD JUMP JUMPDEST DUP6 DUP12 MLOAD PUSH32 0x3B99B53D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP12 DUP1 REVERT JUMPDEST POP POP SWAP6 POP POP SWAP5 POP SWAP6 DUP1 SWAP6 SWAP2 POP SLOAD DUP5 GT PUSH2 0x9F3 JUMPI POP PUSH2 0x54F SWAP4 SWAP5 POP CALLER SWAP2 PUSH2 0x3E4C JUMP JUMPDEST DUP6 SWAP1 MLOAD PUSH32 0xC980904D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP11 POP DUP10 DUP4 LT PUSH2 0x7D8 JUMP JUMPDEST DUP7 DUP15 MLOAD PUSH32 0x14E361300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP8 MLOAD PUSH32 0x3B99B53D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP10 DUP1 REVERT JUMPDEST DUP3 DUP9 MLOAD PUSH32 0x19CF368B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP9 DUP3 SGT ISZERO PUSH2 0x73C JUMP JUMPDEST DUP7 DUP1 REVERT JUMPDEST SWAP1 POP DUP4 CALLVALUE PUSH2 0x43A JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x43A JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0xB73 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xB49 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ DUP4 PUSH2 0xB42 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0xB3B JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0xBCB JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xBCB JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0xBCB JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0xBCB JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xBCB JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0xBCB JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0xCB2 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 ADD DUP2 ADD MLOAD DUP5 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xC73 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP3 PUSH1 0x80 MSTORE DUP3 DUP2 SUB PUSH2 0x3840 JUMPI SWAP2 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xCE7 JUMPI POP POP POP POP JUMP JUMPDEST DUP4 DUP3 SWAP6 SWAP4 SWAP5 SWAP6 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x5 SWAP3 DUP3 DUP5 SHL PUSH1 0x80 MLOAD ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 SWAP2 DUP3 PUSH1 0x80 MLOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0xBCB JUMPI DUP2 PUSH1 0x80 MLOAD ADD CALLDATALOAD SWAP8 PUSH8 0xFFFFFFFFFFFFFFFF DUP10 GT PUSH2 0xBCB JUMPI PUSH1 0x20 DUP4 PUSH1 0x80 MLOAD ADD ADD SWAP9 DUP1 CALLDATASIZE SUB DUP11 SGT PUSH2 0xBCB JUMPI PUSH1 0x60 SWAP8 PUSH1 0x3F SWAP1 DUP2 DUP10 DUP10 ADD CALLDATALOAD PUSH1 0xF8 SHR AND PUSH1 0x1 SWAP8 PUSH1 0x20 DUP3 LT PUSH1 0x0 EQ PUSH2 0x347C JUMPI POP PUSH1 0x10 DUP1 DUP3 LT ISZERO PUSH2 0x2ABF JUMPI POP PUSH1 0x8 DUP1 DUP3 LT ISZERO PUSH2 0x1B89 JUMPI POP DUP1 PUSH2 0x1203 JUMPI POP POP POP PUSH2 0xD9C SWAP1 DUP11 PUSH2 0x3E02 JUMP JUMPDEST SWAP3 SWAP1 SWAP9 PUSH1 0xA0 DUP6 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 EQ PUSH2 0x11F9 JUMPI PUSH2 0xDD3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP12 JUMPDEST CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP10 PUSH1 0x40 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD DUP6 DUP3 SWAP14 SWAP3 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 EQ PUSH2 0x1141 JUMPI JUMPDEST POP SWAP6 SWAP13 SWAP6 POP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0xBCB JUMPI PUSH1 0x42 DUP7 LT PUSH2 0x113A JUMPI ADDRESS SWAP2 JUMPDEST DUP7 PUSH1 0x2B GT PUSH2 0xBCB JUMPI DUP14 SWAP2 PUSH1 0x17 DUP4 ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 DUP4 CALLDATALOAD SWAP5 PUSH3 0xFFFFFF DUP7 PUSH1 0x60 SHR SWAP7 PUSH2 0xE87 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP3 PUSH1 0x48 SHR AND DUP7 DUP11 PUSH2 0x3EB6 JUMP JUMPDEST AND SWAP1 DUP5 DUP9 LT ISZERO PUSH2 0x111E JUMPI DUP1 PUSH5 0x1000276A4 SWAP7 JUMPDEST PUSH1 0x2B PUSH1 0x40 MLOAD SWAP10 PUSH1 0x40 PUSH1 0x20 DUP13 ADD MSTORE DUP2 PUSH1 0x60 DUP13 ADD MSTORE PUSH1 0x80 DUP12 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xAB DUP11 ADD MSTORE AND PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 MSTORE PUSH1 0xC0 DUP8 ADD SWAP6 DUP8 DUP8 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP9 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 SWAP5 DUP3 DUP9 SWAP6 DUP7 DUP9 MSTORE PUSH32 0x128ACB0800000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0xC4 DUP11 ADD MSTORE DUP7 DUP11 LT PUSH1 0xE4 DUP11 ADD MSTORE PUSH2 0x104 DUP10 ADD MSTORE AND PUSH2 0x124 DUP8 ADD MSTORE PUSH1 0xA0 PUSH2 0x144 DUP8 ADD MSTORE DUP2 PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 DUP9 PUSH2 0xF5D PUSH2 0x164 DUP3 ADD DUP3 PUSH2 0xC68 JUMP JUMPDEST SUB ADD SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP3 DUP4 SWAP5 PUSH2 0x10A1 JUMPI JUMPDEST POP POP PUSH2 0xF87 SWAP4 LT PUSH1 0x0 EQ PUSH2 0x109A JUMPI POP PUSH2 0x3E1F JUMP JUMPDEST SWAP11 PUSH1 0x42 DUP6 LT PUSH2 0xFC8 JUMPI ADDRESS SWAP1 DUP6 PUSH1 0x17 GT PUSH2 0xBCB JUMPI PUSH1 0x17 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 SWAP2 ADD SWAP6 ADD SWAP5 SWAP12 PUSH2 0xE0F JUMP JUMPDEST POP SWAP9 POP SWAP9 PUSH1 0x60 SWAP2 SWAP7 SWAP6 SWAP8 SWAP5 SWAP4 SWAP3 POP SWAP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD GT PUSH2 0x1070 JUMPI JUMPDEST ISZERO DUP1 PUSH2 0x1043 JUMPI JUMPDEST PUSH2 0xFFC JUMPI POP PUSH1 0x1 ADD SWAP3 SWAP2 SWAP3 SWAP1 SWAP3 PUSH2 0xCDA JUMP JUMPDEST SWAP1 PUSH2 0x103F PUSH1 0x40 SWAP3 DUP4 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x2C4029E900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 DUP6 ADD CALLDATALOAD AND ISZERO PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4566B5A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x3E1F JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP4 POP PUSH1 0x40 DUP5 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x10DB JUMPI JUMPDEST DUP2 PUSH2 0x10BF PUSH1 0x40 SWAP4 DUP7 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD PUSH1 0xE0 SWAP3 SWAP1 SWAP3 ADD MLOAD SWAP2 SWAP1 PUSH2 0xF87 CODESIZE PUSH2 0xF73 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 SWAP7 PUSH2 0xE9A JUMP JUMPDEST DUP12 SWAP2 PUSH2 0xE42 JUMP JUMPDEST PUSH1 0x14 SWAP2 SWAP3 POP LT PUSH2 0x11CF JUMPI PUSH1 0x20 PUSH1 0x24 SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE CALLDATALOAD PUSH1 0x60 SHR GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP2 PUSH2 0x119D JUMPI JUMPDEST POP CODESIZE DUP1 PUSH2 0xE09 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x11C7 JUMPI JUMPDEST DUP2 PUSH2 0x11B7 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD CODESIZE PUSH2 0x1195 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x11AA JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x3B99B53D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0xDD3 ADDRESS SWAP12 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP14 SWAP5 SWAP4 SWAP7 SWAP14 SWAP12 SWAP9 SWAP8 SWAP6 SWAP11 SWAP10 SWAP12 EQ PUSH1 0x0 EQ PUSH2 0x14C7 JUMPI POP POP DUP2 PUSH2 0x1229 SWAP3 SWAP4 SWAP5 POP PUSH2 0x3E02 JUMP JUMPDEST SWAP1 PUSH1 0xA0 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 EQ PUSH2 0x14BD JUMPI PUSH2 0x125D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP4 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP6 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 SSTORE PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD LT ISZERO PUSH2 0xBCB JUMPI PUSH2 0x12AB PUSH1 0x40 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3E1F JUMP JUMPDEST PUSH1 0x2B DUP4 LT PUSH2 0x11CF JUMPI DUP2 CALLDATALOAD SWAP3 PUSH1 0x17 DUP4 ADD CALLDATALOAD PUSH1 0x60 SHR SWAP6 DUP7 SWAP3 DUP6 PUSH1 0x60 SHR SWAP7 DUP8 SWAP7 PUSH1 0x48 SHR PUSH3 0xFFFFFF AND PUSH2 0x12DB SWAP1 DUP7 DUP10 PUSH2 0x3EB6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 DUP8 DUP7 LT PUSH1 0x0 EQ SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP6 PUSH1 0x0 SWAP6 PUSH2 0x1376 PUSH2 0x13CA SWAP6 PUSH1 0x40 SWAP13 PUSH2 0x14A2 JUMPI PUSH5 0x1000276A4 SWAP4 JUMPDEST DUP6 PUSH2 0x1344 DUP16 MLOAD SWAP9 PUSH1 0x40 SWAP5 DUP11 SWAP6 PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP2 PUSH2 0x386A JUMP JUMPDEST SWAP2 AND DUP15 DUP4 ADD MSTORE SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP7 MSTORE DUP6 PUSH2 0x392D JUMP JUMPDEST DUP11 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP9 PUSH32 0x128ACB0800000000000000000000000000000000000000000000000000000000 DUP11 MSTORE AND PUSH1 0x4 DUP10 ADD MSTORE LT PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD MSTORE AND PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP2 DUP3 SWAP4 PUSH2 0x1464 JUMPI JUMPDEST POP PUSH1 0x40 SWAP4 LT ISZERO PUSH2 0x1454 JUMPI POP PUSH2 0x13F3 SWAP1 PUSH2 0x3E1F JUMP JUMPDEST SWAP2 JUMPDEST PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SUB PUSH2 0x142A JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SSTORE JUMPDEST PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x75E2F0AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x145E SWAP2 POP PUSH2 0x3E1F JUMP JUMPDEST SWAP2 PUSH2 0x13F5 JUMP JUMPDEST SWAP3 POP SWAP1 PUSH1 0x40 DUP4 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x149A JUMPI JUMPDEST DUP2 PUSH2 0x1480 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP DUP2 MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP2 SWAP1 PUSH1 0x40 PUSH2 0x13DF JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1473 JUMP JUMPDEST PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 SWAP4 PUSH2 0x1329 JUMP JUMPDEST PUSH2 0x125D ADDRESS SWAP4 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x1511 JUMPI POP POP POP PUSH2 0x1425 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND PUSH2 0x150A PUSH1 0x40 PUSH1 0x60 DUP6 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 CALLDATALOAD PUSH2 0x3D03 JUMP JUMPDEST SWAP2 SWAP4 SWAP2 PUSH1 0x3 DUP2 SUB PUSH2 0x1883 JUMPI POP POP PUSH1 0x80 MLOAD DUP2 ADD DUP1 DUP5 ADD SWAP4 SWAP1 PUSH1 0x40 SWAP1 DUP6 SUB SLT PUSH2 0xBCB JUMPI DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP3 PUSH1 0x80 MLOAD ADD ADD SWAP3 PUSH1 0x60 DUP5 DUP7 SUB SLT PUSH2 0xBCB JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH1 0x60 DUP7 ADD DUP7 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP6 ADD PUSH1 0x20 DUP3 ADD DUP1 SWAP9 DUP3 ADD SLT ISZERO PUSH2 0xBCB JUMPI PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x15A5 DUP3 PUSH2 0x39D8 JUMP JUMPDEST SWAP3 PUSH2 0x15B3 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x392D JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x40 PUSH1 0x20 DUP6 ADD SWAP4 PUSH1 0x7 SHL DUP4 ADD ADD SWAP2 DUP11 DUP4 GT PUSH2 0xBCB JUMPI PUSH1 0x40 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x181E JUMPI POP POP POP POP DUP6 MSTORE PUSH2 0x15E9 PUSH1 0x40 DUP6 ADD PUSH2 0xC16 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP7 ADD SWAP7 DUP8 MSTORE PUSH1 0x60 PUSH1 0x40 DUP8 ADD SWAP6 ADD CALLDATALOAD DUP6 MSTORE PUSH1 0x40 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xBCB JUMPI PUSH1 0x20 PUSH2 0x162A SWAP3 PUSH2 0x1630 SWAP7 PUSH1 0x80 MLOAD ADD ADD ADD PUSH2 0x3A03 JUMP JUMPDEST POP PUSH2 0x3DE5 JUMP JUMPDEST SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI SWAP5 SWAP3 SWAP4 SWAP2 SWAP1 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD SWAP4 MLOAD SWAP4 PUSH1 0x60 PUSH1 0x64 DUP8 ADD MSTORE DUP5 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH1 0xE4 DUP8 ADD SWAP6 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x17A5 JUMPI POP POP POP SWAP5 PUSH2 0x1749 SWAP3 DUP6 SWAP5 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SWAP9 MLOAD AND PUSH1 0x84 DUP8 ADD MSTORE MLOAD PUSH1 0xA4 DUP7 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP6 DUP5 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x386A JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x10E3 JUMPI PUSH2 0x1796 JUMPI JUMPDEST POP PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x179F SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x1790 JUMP JUMPDEST SWAP2 SWAP8 SWAP7 POP SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP3 ADD MLOAD AND DUP5 DUP4 ADD MSTORE PUSH1 0x60 PUSH6 0xFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP9 SWAP7 SWAP8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x16E3 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x20 DUP6 DUP5 SUB ADD SLT PUSH2 0xBCB JUMPI PUSH1 0x20 PUSH1 0x80 SWAP2 PUSH1 0x40 MLOAD PUSH2 0x183C DUP2 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x1845 DUP8 PUSH2 0xC16 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1852 DUP4 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0x1862 PUSH1 0x40 DUP9 ADD PUSH2 0x39F0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x1873 PUSH1 0x60 DUP9 ADD PUSH2 0x39F0 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x15D0 JUMP JUMPDEST PUSH1 0x4 SWAP6 POP SWAP2 SWAP4 POP DUP5 DUP3 SUB PUSH2 0x19F2 JUMPI POP POP SWAP1 SWAP2 PUSH1 0x40 PUSH1 0x60 PUSH2 0x18A9 DUP3 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST PUSH1 0x80 MLOAD SWAP1 SWAP6 ADD ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP4 CALLDATALOAD AND DUP1 PUSH2 0x191F JUMPI POP SELFBALANCE SWAP3 DUP4 LT PUSH2 0x18F9 JUMPI POP POP DUP1 PUSH2 0x18E9 JUMPI JUMPDEST POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x18F2 SWAP2 PUSH2 0x4681 JUMP JUMPDEST CODESIZE DUP1 PUSH2 0x18E2 JUMP JUMPDEST MLOAD PUSH32 0xBB9278B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP4 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS DUP4 DUP7 ADD MSTORE PUSH1 0x20 DUP6 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x19E7 JUMPI PUSH1 0x0 SWAP6 PUSH2 0x19B3 JUMPI JUMPDEST POP DUP5 LT PUSH2 0x198D JUMPI POP POP DUP2 PUSH2 0x197C JUMPI JUMPDEST POP POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x1985 SWAP3 PUSH2 0x46EF JUMP JUMPDEST CODESIZE DUP1 DUP1 PUSH2 0x1974 JUMP JUMPDEST MLOAD PUSH32 0x675CAE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP5 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x19DF JUMPI JUMPDEST DUP2 PUSH2 0x19CE PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP4 CODESIZE PUSH2 0x1965 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x19C1 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP2 SUB PUSH2 0x1A1F JUMPI POP PUSH2 0x1425 SWAP3 POP PUSH2 0x1A18 PUSH1 0x40 PUSH1 0x60 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x3BD8 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH1 0x6 DUP2 SUB PUSH2 0x1B59 JUMPI POP PUSH1 0x80 MLOAD ADD PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 SWAP1 PUSH2 0x1A44 SWAP1 DUP3 ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP3 DUP3 ISZERO DUP1 ISZERO PUSH2 0x1B4E JUMPI JUMPDEST PUSH2 0x1B26 JUMPI CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 DUP5 PUSH2 0x1A8A JUMPI POP POP PUSH2 0x1425 SWAP3 POP PUSH2 0x1A83 PUSH2 0x2710 SWAP2 SELFBALANCE PUSH2 0x3CB7 JUMP JUMPDEST DIV SWAP1 PUSH2 0x4681 JUMP JUMPDEST DUP2 MLOAD SWAP1 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1B1C JUMPI POP PUSH1 0x0 SWAP2 PUSH2 0x1AE8 JUMPI JUMPDEST POP PUSH2 0x1AE1 PUSH2 0x1425 SWAP5 SWAP4 SWAP3 PUSH2 0x2710 SWAP3 PUSH2 0x3CB7 JUMP JUMPDEST DIV SWAP2 PUSH2 0x46EF JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1B14 JUMPI JUMPDEST DUP2 PUSH2 0x1B02 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD PUSH2 0x1AE1 PUSH2 0x1ACE JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1AF5 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 DUP3 MLOAD PUSH32 0xDEAA01E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH2 0x2710 DUP4 GT PUSH2 0x1A4E JUMP JUMPDEST DUP4 PUSH1 0x24 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xD76A1E9E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST DUP2 SWAP14 SWAP7 SWAP14 SWAP12 SWAP9 SWAP8 SWAP5 SWAP6 SWAP11 SWAP10 SWAP12 SWAP4 SWAP3 SWAP4 EQ PUSH1 0x0 EQ PUSH2 0x1E90 JUMPI POP POP POP PUSH1 0x40 SWAP2 PUSH2 0x1BB8 DUP4 DUP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP2 DUP6 PUSH2 0x3E02 JUMP JUMPDEST SWAP3 SWAP1 SWAP5 PUSH1 0xA0 DUP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 EQ PUSH2 0x1E86 JUMPI PUSH2 0x1BEE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP2 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 DUP7 ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x1BFE DUP6 PUSH2 0x4039 JUMP JUMPDEST DUP8 PUSH1 0x1 LT ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x1C20 PUSH2 0x1C68 SWAP2 PUSH2 0x1C1A PUSH1 0x20 DUP10 ADD PUSH2 0x4039 JUMP JUMPDEST SWAP1 PUSH2 0x4168 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH32 0x0 PUSH2 0x4067 JUMP JUMPDEST SWAP4 DUP5 DUP2 PUSH2 0x1E3D JUMPI JUMPDEST POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD SWAP4 DUP7 DUP6 GT PUSH2 0x1E0E JUMPI PUSH2 0x1CC4 SWAP5 PUSH2 0x1CC9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 SWAP3 DUP11 DUP6 PUSH2 0x4029 JUMP JUMPDEST PUSH2 0x4039 JUMP JUMPDEST AND SWAP5 DUP7 MLOAD SWAP5 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 SWAP2 DUP3 DUP8 MSTORE DUP5 AND SWAP4 PUSH1 0x4 SWAP10 DUP6 DUP12 DUP10 ADD MSTORE PUSH1 0x24 SWAP5 PUSH1 0x20 DUP10 DUP8 DUP2 DUP14 GAS STATICCALL SWAP9 DUP10 ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 SWAP10 PUSH2 0x1DCE JUMPI JUMPDEST POP SWAP2 PUSH1 0x20 SWAP7 SWAP6 SWAP5 SWAP4 SWAP2 PUSH2 0x1D2A SWAP4 PUSH2 0x41E1 JUMP JUMPDEST DUP8 MLOAD SWAP7 DUP8 SWAP4 DUP5 SWAP3 DUP4 MSTORE DUP11 DUP4 ADD MSTORE GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP4 PUSH2 0x1D8E JUMPI JUMPDEST POP SWAP1 PUSH1 0x60 PUSH2 0x1D5C SWAP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP3 PUSH2 0x405A JUMP JUMPDEST LT PUSH2 0x1D68 JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0x689100AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP3 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1DBB JUMPI JUMPDEST DUP2 PUSH2 0x1DA9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP2 PUSH1 0x60 PUSH2 0x1D48 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1D9C JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP9 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1DFB JUMPI JUMPDEST DUP2 PUSH2 0x1DE9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP8 PUSH1 0x20 PUSH2 0x1D18 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1DDC JUMP JUMPDEST DUP12 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E4F SWAP3 PUSH2 0x1E4A DUP9 PUSH2 0x4039 JUMP JUMPDEST PUSH2 0x3E4C JUMP JUMPDEST CODESIZE DUP1 DUP5 PUSH2 0x1C70 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1BEE ADDRESS SWAP2 PUSH2 0xDCD JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP4 SWAP2 PUSH1 0x9 DUP2 SUB PUSH2 0x2271 JUMPI POP POP PUSH2 0x1EA9 SWAP1 DUP3 PUSH2 0x3E02 JUMP JUMPDEST PUSH1 0x80 MLOAD DUP5 ADD PUSH1 0xA0 ADD CALLDATALOAD ISZERO PUSH2 0x2267 JUMPI PUSH2 0x1EDA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP4 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP3 PUSH2 0x1EE4 DUP4 PUSH2 0x39D8 JUMP JUMPDEST SWAP6 PUSH2 0x1EF2 PUSH1 0x40 MLOAD SWAP8 DUP9 PUSH2 0x392D JUMP JUMPDEST DUP4 DUP8 MSTORE DUP4 SWAP1 SHL DUP3 ADD PUSH1 0x20 DUP8 ADD CALLDATASIZE DUP3 GT PUSH2 0xBCB JUMPI DUP4 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x224F JUMPI POP POP POP PUSH1 0x0 SWAP5 PUSH1 0x2 DUP8 MLOAD LT PUSH2 0x2225 JUMPI PUSH1 0x40 DUP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP7 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1E0E JUMPI SWAP1 DUP2 JUMPDEST PUSH2 0x1FB2 JUMPI POP POP PUSH1 0x80 MLOAD ADD PUSH1 0x60 ADD CALLDATALOAD DUP7 GT PUSH2 0x1F88 JUMPI DUP3 ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x1425 SWAP6 DUP6 PUSH2 0x1F83 SWAP3 PUSH2 0x1E4A DUP6 PUSH2 0x4039 JUMP JUMPDEST PUSH2 0x41E1 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC8CA61E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD SWAP8 POP DUP9 DUP9 GT PUSH2 0x1E0E JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2002 PUSH2 0x2078 SWAP10 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST MLOAD AND PUSH2 0x202E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2026 DUP13 DUP7 PUSH2 0x3DA3 JUMP JUMPDEST MLOAD AND DUP3 PUSH2 0x4168 JUMP JUMPDEST DUP2 SWAP11 SWAP2 PUSH32 0x0 PUSH32 0x0 PUSH2 0x4067 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x60 DUP3 PUSH1 0x4 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND GAS STATICCALL SWAP11 DUP12 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP3 DUP4 SWAP13 PUSH2 0x21DC JUMPI JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x21C2 JUMPI PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP10 AND SWAP1 JUMPDEST SWAP9 DUP1 ISZERO DUP1 ISZERO PUSH2 0x21BA JUMPI JUMPDEST PUSH2 0x2190 JUMPI DUP3 PUSH2 0x211A SWAP2 PUSH2 0x3CB7 JUMP JUMPDEST SWAP2 PUSH2 0x3E8 SWAP3 DUP4 DUP2 MUL SWAP4 DUP2 DUP6 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1E0E JUMPI PUSH2 0x2138 SWAP2 PUSH2 0x405A JUMP JUMPDEST PUSH2 0x3E5 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1E0E JUMPI PUSH2 0x2155 SWAP2 PUSH2 0x3CCA JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1E0E JUMPI SWAP8 DUP1 ISZERO PUSH2 0x1E0E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 DUP2 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x7B9C891600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP2 ISZERO PUSH2 0x210C JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP10 DUP11 AND SWAP10 AND SWAP1 PUSH2 0x2102 JUMP JUMPDEST PUSH2 0x2215 SWAP2 SWAP13 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 POP PUSH1 0x60 RETURNDATASIZE DUP2 GT PUSH2 0x221E JUMPI JUMPDEST PUSH2 0x220D DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x41AB JUMP JUMPDEST POP SWAP12 SWAP1 SWAP3 PUSH2 0x20D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x20DB826700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x225C DUP5 PUSH2 0xC16 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1F08 JUMP JUMPDEST PUSH2 0x1EDA ADDRESS SWAP4 PUSH2 0xDCD JUMP JUMPDEST SWAP3 SWAP5 POP SWAP2 PUSH1 0xA DUP2 SUB PUSH2 0x23D7 JUMPI POP PUSH1 0x80 MLOAD DUP4 ADD PUSH1 0xE0 DUP2 ADD CALLDATALOAD DUP2 ADD SWAP5 PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP5 POP SWAP1 SWAP3 SWAP2 PUSH2 0x22A4 SWAP2 SWAP1 DUP8 SUB ADD DUP5 PUSH2 0x3DB7 JUMP JUMPDEST GT PUSH2 0x11CF JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 PUSH32 0x0 AND SWAP3 DUP6 PUSH1 0x1 SLOAD AND SWAP2 DUP5 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x40 SWAP6 DUP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP7 PUSH32 0x2B67B57000000000000000000000000000000000000000000000000000000000 DUP9 MSTORE PUSH1 0x4 DUP9 ADD MSTORE PUSH2 0x232C SWAP1 PUSH2 0xC16 JUMP JUMPDEST AND PUSH1 0x24 DUP7 ADD MSTORE DUP1 DUP9 DUP4 PUSH1 0x80 MLOAD ADD ADD PUSH2 0x2343 SWAP1 PUSH2 0xC16 JUMP JUMPDEST AND PUSH1 0x44 DUP7 ADD MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 DUP4 PUSH1 0x80 MLOAD ADD PUSH1 0x60 ADD PUSH2 0x2362 SWAP1 PUSH2 0x39F0 JUMP JUMPDEST AND PUSH1 0x64 DUP8 ADD MSTORE DUP3 PUSH1 0x80 MLOAD ADD PUSH1 0x80 ADD PUSH2 0x2379 SWAP1 PUSH2 0x39F0 JUMP JUMPDEST AND PUSH1 0x84 DUP7 ADD MSTORE DUP2 PUSH1 0x80 MLOAD ADD PUSH1 0xA0 ADD PUSH2 0x2390 SWAP1 PUSH2 0xC16 JUMP JUMPDEST AND PUSH1 0xA4 DUP6 ADD MSTORE PUSH1 0x80 MLOAD ADD PUSH1 0xC0 ADD CALLDATALOAD PUSH1 0xC4 DUP5 ADD MSTORE PUSH2 0x100 PUSH1 0xE4 DUP5 ADD MSTORE PUSH2 0x23BC SWAP2 PUSH2 0x104 DUP5 ADD SWAP2 DUP8 ADD PUSH2 0x386A JUMP JUMPDEST SUB DUP2 GAS PUSH1 0x0 SWAP5 DUP6 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0xB DUP2 SUB PUSH2 0x25A1 JUMPI POP POP POP PUSH2 0x23F6 PUSH1 0x40 DUP1 SWAP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP3 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 DUP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 SUB PUSH2 0x2571 JUMPI POP POP SELFBALANCE JUMPDEST DUP1 PUSH2 0x2430 JUMPI POP POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP4 MLOAD SWAP3 PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 SWAP4 PUSH1 0x0 DUP2 DUP7 DUP2 DUP8 DUP8 GAS CALL DUP1 ISZERO PUSH2 0x2566 JUMPI PUSH2 0x2557 JUMPI JUMPDEST POP ADDRESS SWAP1 DUP7 AND SUB PUSH2 0x24BF JUMPI JUMPDEST POP POP PUSH2 0x1974 JUMP JUMPDEST PUSH2 0x251E SWAP5 PUSH1 0x0 PUSH1 0x20 SWAP5 DUP7 MLOAD SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x2538 JUMPI JUMPDEST DUP1 DUP1 DUP1 DUP1 PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x2550 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3BE JUMPI PUSH2 0x3AF DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST POP CODESIZE PUSH2 0x252F JUMP JUMPDEST PUSH2 0x2560 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x24AD JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SELFBALANCE LT ISZERO PUSH2 0x2423 JUMPI PUSH1 0x4 DUP3 MLOAD PUSH32 0xBB9278B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0xC DUP2 SUB PUSH2 0x2731 JUMPI POP POP POP SWAP1 PUSH2 0x25B7 SWAP1 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND PUSH1 0x40 DUP1 MLOAD SWAP4 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 ADDRESS DUP2 DUP8 ADD MSTORE PUSH1 0x24 SWAP2 PUSH1 0x20 DUP8 DUP5 DUP2 DUP9 GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP8 PUSH2 0x26FD JUMPI JUMPDEST POP PUSH1 0x80 MLOAD ADD DUP4 ADD CALLDATALOAD DUP7 LT PUSH2 0x26D6 JUMPI DUP6 PUSH2 0x2659 JUMPI JUMPDEST POP POP POP POP POP POP POP PUSH2 0xFE3 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 SWAP2 DUP7 SWAP2 DUP4 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x26C7 JUMPI JUMPDEST POP ADDRESS SWAP1 DUP4 AND SUB PUSH2 0x26B7 JUMPI JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x264D JUMP JUMPDEST PUSH2 0x26C0 SWAP2 PUSH2 0x4681 JUMP JUMPDEST CODESIZE DUP1 PUSH2 0x26AD JUMP JUMPDEST PUSH2 0x26D0 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x26A2 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xBB9278B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP7 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2729 JUMPI JUMPDEST DUP2 PUSH2 0x2718 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP6 DUP4 PUSH2 0x2639 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x270B JUMP JUMPDEST PUSH1 0xD DUP2 SUB PUSH2 0x298C JUMPI POP DUP3 PUSH1 0x80 MLOAD ADD ADD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 PUSH1 0x20 DUP3 PUSH1 0x80 MLOAD ADD DUP6 SUB SLT PUSH2 0xBCB JUMPI CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP5 SWAP2 PUSH1 0x80 MLOAD ADD ADD SWAP2 DUP3 ADD SLT ISZERO PUSH2 0xBCB JUMPI PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x2783 DUP3 PUSH2 0x39D8 JUMP JUMPDEST SWAP4 PUSH1 0x40 SWAP4 PUSH2 0x2793 DUP6 MLOAD SWAP7 DUP8 PUSH2 0x392D JUMP JUMPDEST DUP4 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP3 DUP6 DUP5 SWAP6 PUSH1 0x7 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xBCB JUMPI DUP6 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x292A JUMPI POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0x1 SLOAD AND DUP5 MLOAD SWAP1 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x28BE JUMPI POP POP POP DUP2 PUSH32 0x0 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP4 MLOAD PUSH32 0xD58B1DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP5 MLOAD PUSH1 0x24 DUP7 ADD DUP2 SWAP1 MSTORE DUP6 SWAP3 PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP2 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x287A JUMPI POP POP POP POP SWAP2 DUP2 PUSH1 0x0 DUP2 DUP2 SWAP6 SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST SWAP2 SWAP4 DUP4 SWAP6 POP PUSH1 0x80 PUSH1 0x20 SWAP2 DUP5 PUSH1 0x60 PUSH1 0x1 SWAP6 SWAP8 MLOAD DUP3 DUP2 MLOAD AND DUP5 MSTORE DUP3 DUP7 DUP3 ADD MLOAD AND DUP7 DUP6 ADD MSTORE DUP3 DUP14 DUP3 ADD MLOAD AND DUP14 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 SWAP2 DUP8 SWAP5 SWAP4 SWAP3 PUSH2 0x2852 JUMP JUMPDEST DUP2 DUP6 PUSH2 0x28CA DUP4 DUP11 PUSH2 0x3DA3 JUMP JUMPDEST MLOAD MLOAD AND SUB PUSH2 0x2901 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1E0E JUMPI PUSH1 0x1 ADD PUSH2 0x27DB JUMP JUMPDEST PUSH1 0x4 DUP7 MLOAD PUSH32 0xE700287700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x80 PUSH1 0x20 DUP6 DUP5 SUB ADD SLT PUSH2 0xBCB JUMPI PUSH1 0x20 PUSH1 0x80 SWAP2 DUP8 MLOAD PUSH2 0x2947 DUP2 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x2950 DUP8 PUSH2 0xC16 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x295D DUP4 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0x296C DUP10 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST DUP10 DUP3 ADD MSTORE PUSH2 0x297C PUSH1 0x60 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x27AF JUMP JUMPDEST SWAP3 SWAP5 POP POP POP PUSH1 0xE DUP2 SUB PUSH2 0x2A8E JUMPI POP PUSH1 0x40 SWAP2 DUP3 MLOAD SWAP1 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x4 SWAP9 CALLDATALOAD AND DUP9 DUP4 ADD MSTORE DUP9 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP3 PUSH2 0x2A59 JUMPI JUMPDEST POP PUSH1 0x80 MLOAD ADD PUSH1 0x60 ADD CALLDATALOAD GT DUP1 ISZERO SWAP3 SWAP1 PUSH2 0x2A1B JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0xA328167200000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x2A51 DUP2 PUSH2 0x38F5 JUMP JUMPDEST SWAP1 CODESIZE DUP1 PUSH2 0x18E2 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2A86 JUMPI JUMPDEST DUP2 PUSH2 0x2A74 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP1 PUSH1 0x60 PUSH2 0x2A02 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD76A1E9E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x18 SWAP12 SWAP6 SWAP4 SWAP9 SWAP8 SWAP10 SWAP7 SWAP3 SWAP5 SWAP12 DUP1 DUP4 LT PUSH1 0x0 EQ PUSH2 0x304E JUMPI POP DUP2 SUB PUSH2 0x2B35 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x2AF3 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP1 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x11 DUP2 SUB PUSH2 0x2B8C JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x2B50 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x12 DUP2 SUB PUSH2 0x2BE3 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x2BA7 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP2 SWAP4 SWAP3 POP SWAP1 PUSH1 0x13 DUP2 SUB PUSH2 0x2D49 JUMPI POP POP SWAP1 SWAP2 POP CALLDATALOAD PUSH32 0x0 SWAP2 PUSH1 0x40 PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8264FE9800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x24 DUP8 DUP2 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x2C59 DUP2 PUSH2 0x3911 JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x60 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD DUP9 GAS CALL SWAP3 PUSH2 0x2C70 PUSH2 0x39A8 JUMP JUMPDEST SWAP5 DUP5 ISZERO PUSH2 0x2D0F JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2C9E SWAP3 AND SWAP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP3 MLOAD PUSH32 0x8B72A2EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST POP POP SWAP2 SWAP3 POP POP MLOAD PUSH32 0xAE9BDF0000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH2 0x2B2F DUP2 PUSH2 0x38F5 JUMP JUMPDEST PUSH1 0x15 DUP2 SUB PUSH2 0x2E5A JUMPI POP POP SWAP1 PUSH1 0x40 SWAP2 DUP3 DUP1 MLOAD SWAP2 PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 DUP4 PUSH1 0x24 DUP2 PUSH1 0x4 SWAP8 PUSH1 0x60 DUP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD DUP10 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 SWAP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2E4F JUMPI PUSH1 0x0 SWAP4 PUSH2 0x2E10 JUMPI JUMPDEST POP DUP2 SWAP1 CALLDATALOAD AND SWAP2 AND EQ SWAP2 DUP3 ISZERO PUSH2 0x2DDA JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0x7DBE7E8900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x2A51 DUP2 PUSH2 0x38F5 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP2 SWAP4 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2E47 JUMPI JUMPDEST DUP2 PUSH2 0x2E2C PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1D2 JUMPI MLOAD SWAP1 DUP3 DUP3 AND DUP3 SUB PUSH2 0x10F JUMPI POP SWAP2 DUP2 PUSH2 0x2DC4 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2E1F JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x16 DUP2 SUB PUSH2 0x2F81 JUMPI POP POP PUSH1 0x40 SWAP2 DUP3 MLOAD SWAP1 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 DUP3 DUP1 PUSH2 0x2ECC PUSH1 0x4 SWAP7 PUSH1 0x60 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 CALLDATALOAD DUP9 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP3 PUSH2 0x2F4C JUMPI JUMPDEST POP PUSH1 0x80 SWAP1 DUP2 MLOAD ADD ADD CALLDATALOAD GT SWAP2 DUP3 ISZERO SWAP3 PUSH2 0x2F16 JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0x483A692900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x2A51 DUP2 PUSH2 0x38F5 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2F79 JUMPI JUMPDEST DUP2 PUSH2 0x2F67 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP1 PUSH1 0x80 PUSH2 0x2EFD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2F5A JUMP JUMPDEST SWAP1 SWAP3 SWAP1 PUSH1 0x17 EQ PUSH2 0x2F92 JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2FBA DUP4 DUP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP4 CALLDATALOAD AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP3 MLOAD PUSH32 0x42842E0E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x80 MLOAD ADDRESS PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 ADD PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x44 DUP3 ADD MSTORE SWAP2 PUSH1 0x0 SWAP1 DUP4 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x303F JUMPI JUMPDEST DUP1 PUSH2 0x18E2 JUMP JUMPDEST PUSH2 0x3048 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x3039 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 DUP3 EQ ISZERO SWAP1 POP PUSH2 0x3089 JUMPI POP POP POP PUSH2 0x2B2F SWAP3 POP PUSH32 0x0 SWAP2 PUSH2 0x3A4A JUMP JUMPDEST PUSH1 0x19 DUP2 SUB PUSH2 0x30E0 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x30A4 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x1A DUP2 SUB PUSH2 0x3137 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x30FB DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x1B DUP2 SUB PUSH2 0x325E JUMPI POP POP POP PUSH1 0x0 PUSH2 0x314F DUP2 SWAP3 DUP5 PUSH2 0x3DE5 JUMP JUMPDEST SWAP4 SWAP1 PUSH1 0x40 SWAP5 DUP2 DUP7 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL SWAP2 DUP3 SWAP2 PUSH2 0x3192 PUSH2 0x39A8 JUMP JUMPDEST SWAP3 PUSH2 0x31A0 JUMPI JUMPDEST POP POP SWAP1 PUSH2 0xFE3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x80 DUP4 DUP2 MLOAD ADD ADD CALLDATALOAD AND PUSH2 0x31CF PUSH1 0x60 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 DUP3 MLOAD SWAP1 PUSH2 0x31DC DUP3 PUSH2 0x38D9 JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE DUP1 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH2 0x3238 SWAP5 PUSH1 0x0 DUP1 SWAP5 DUP7 MLOAD SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0xA0 PUSH1 0xC0 DUP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 ADDRESS PUSH1 0x4 DUP8 ADD PUSH2 0x3B42 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x324F JUMPI JUMPDEST DUP1 PUSH2 0x3198 JUMP JUMPDEST PUSH2 0x3258 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x3249 JUMP JUMPDEST SWAP2 SWAP5 SWAP1 SWAP2 PUSH1 0x1C DUP2 SUB PUSH2 0x3299 JUMPI POP POP POP PUSH2 0x2B2F SWAP3 POP PUSH32 0x0 SWAP2 PUSH2 0x3A4A JUMP JUMPDEST SWAP2 SWAP4 SWAP3 SWAP1 SWAP2 PUSH1 0x1D DUP2 SUB PUSH2 0x3422 JUMPI POP POP PUSH1 0x60 DUP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 PUSH1 0x40 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x32DA DUP5 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP5 CALLDATALOAD AND DUP4 MLOAD SWAP5 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 SWAP4 PUSH1 0x20 DUP8 DUP1 PUSH2 0x3339 DUP8 ADDRESS DUP11 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP7 GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x2566 JUMPI PUSH1 0x0 SWAP8 PUSH2 0x33ED JUMPI JUMPDEST POP PUSH1 0x80 SWAP1 DUP2 MLOAD ADD ADD CALLDATALOAD DUP7 LT PUSH2 0x33C5 JUMPI DUP5 MLOAD PUSH2 0x3367 DUP2 PUSH2 0x38D9 JUMP JUMPDEST PUSH1 0x0 DUP2 MSTORE DUP3 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 SWAP5 PUSH2 0x33AF DUP7 SWAP3 DUP9 MLOAD SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD PUSH2 0x3B42 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST DUP4 DUP6 MLOAD PUSH32 0x675CAE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP7 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x341A JUMPI JUMPDEST DUP2 PUSH2 0x3408 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP6 PUSH1 0x80 PUSH2 0x334D JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x33FB JUMP JUMPDEST SWAP3 SWAP5 POP SWAP3 POP POP PUSH1 0x1E DUP2 SUB PUSH2 0x2A8E JUMPI POP DUP2 PUSH2 0x3440 PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP4 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP5 SWAP10 SWAP9 SWAP11 SWAP3 POP PUSH1 0x20 DUP2 SWAP14 SWAP8 SWAP3 SWAP7 SWAP14 SWAP9 SWAP5 SWAP9 EQ PUSH1 0x0 EQ PUSH2 0x34E5 JUMPI POP POP POP POP POP POP DUP1 PUSH2 0x34A9 PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x21 SWAP1 DUP1 DUP3 SUB PUSH2 0x365C JUMPI POP POP POP POP SWAP1 SWAP2 PUSH2 0x350A PUSH2 0x3502 DUP7 DUP7 PUSH2 0x3DC4 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 PUSH2 0x3DE5 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x354C PUSH1 0x40 SWAP8 DUP9 MLOAD SWAP8 PUSH1 0x20 DUP10 ADD SWAP10 PUSH32 0x24856BC300000000000000000000000000000000000000000000000000000000 DUP12 MSTORE PUSH1 0x24 DUP11 ADD MSTORE PUSH1 0x64 DUP10 ADD SWAP2 PUSH2 0x386A JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP8 DUP3 SUB ADD PUSH1 0x44 DUP9 ADD MSTORE DUP2 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 DUP4 ADD SWAP6 SHL DUP3 ADD ADD SWAP6 DUP6 PUSH1 0x0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x35DE JUMPI POP POP POP POP POP POP POP POP SWAP2 DUP2 PUSH2 0x35D0 PUSH1 0x0 SWAP5 SWAP4 DUP6 SWAP5 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x392D JUMP JUMPDEST MLOAD SWAP1 DUP3 ADDRESS GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP6 DUP3 SUB ADD DUP9 MSTORE DUP9 CALLDATALOAD DUP3 DUP5 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0xBCB JUMPI DUP4 ADD SWAP1 PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP1 CALLDATASIZE SUB DUP4 SGT PUSH2 0xBCB JUMPI PUSH2 0x364C PUSH1 0x20 SWAP3 DUP4 SWAP3 DUP12 SWAP6 PUSH2 0x386A JUMP JUMPDEST SWAP11 ADD SWAP9 ADD SWAP7 SWAP6 SWAP5 SWAP4 ADD SWAP2 SWAP1 PUSH2 0x358A JUMP JUMPDEST SWAP3 SWAP8 POP SWAP4 POP SWAP4 POP PUSH1 0x22 DUP2 SWAP6 SWAP3 SWAP6 EQ PUSH1 0x0 EQ PUSH2 0x2A8E JUMPI POP CALLDATALOAD SWAP1 PUSH1 0x40 DUP1 SWAP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x3814 JUMPI POP POP DUP1 DUP5 SWAP2 ISZERO PUSH1 0x0 EQ PUSH2 0x37BF JUMPI POP POP PUSH32 0x0 SWAP2 JUMPDEST PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP3 PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 SWAP6 AND DUP6 DUP6 ADD MSTORE PUSH1 0x20 PUSH1 0x24 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 ADD MSTORE PUSH1 0x44 DUP1 SWAP7 DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT DUP9 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x37B2 JUMPI JUMPDEST POP ISZERO PUSH2 0x3757 JUMPI POP POP POP POP PUSH2 0xFE3 JUMP JUMPDEST SWAP2 PUSH1 0xE PUSH32 0x415050524F56455F4641494C4544000000000000000000000000000000000000 SWAP3 PUSH1 0x20 PUSH1 0x64 SWAP7 SWAP6 MLOAD SWAP6 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE DUP7 ADD MSTORE DUP5 ADD MSTORE DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x3748 JUMP JUMPDEST SUB PUSH2 0x37EB JUMPI PUSH32 0x0 SWAP2 PUSH2 0x36BD JUMP JUMPDEST PUSH1 0x4 DUP3 MLOAD PUSH32 0x5461585F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP3 POP PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xFF633A3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x1F DUP3 PUSH1 0x20 SWAP5 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP4 DUP2 DUP7 MSTORE DUP7 DUP7 ADD CALLDATACOPY PUSH1 0x0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10EF JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x39D3 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x39B9 DUP3 PUSH2 0x396E JUMP JUMPDEST SWAP2 PUSH2 0x39C7 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x392D JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10EF JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xBCB JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x3A1A DUP3 PUSH2 0x396E JUMP JUMPDEST SWAP3 PUSH2 0x3A28 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x392D JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xBCB JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 PUSH2 0x3A57 SWAP1 DUP4 PUSH2 0x3DE5 JUMP JUMPDEST SWAP1 SWAP4 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 CALLDATACOPY DUP3 ADD SWAP1 PUSH1 0x0 SWAP6 DUP7 SWAP4 DUP4 DUP6 DUP1 SWAP6 MSTORE SUB SWAP2 DUP7 CALLDATALOAD SWAP1 GAS CALL SWAP3 PUSH2 0x3A7F PUSH2 0x39A8 JUMP JUMPDEST SWAP3 DUP5 PUSH2 0x3A89 JUMPI POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND PUSH2 0x3AB1 PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 DUP2 EXTCODESIZE ISZERO PUSH2 0x436 JUMPI PUSH1 0x40 MLOAD PUSH32 0x42842E0E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 SWAP1 DUP2 SWAP1 DUP4 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3B36 JUMPI POP PUSH2 0x3B2B JUMPI POP JUMP JUMPDEST PUSH2 0x3B34 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP3 PUSH2 0x3B84 SWAP6 SWAP5 SWAP2 PUSH1 0xA0 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP1 DUP3 AND PUSH1 0x1 DUP2 SUB PUSH2 0x3BB1 JUMPI POP POP PUSH1 0x1 SLOAD AND SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x2 SUB PUSH2 0x3B84 JUMPI POP ADDRESS SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xBCB JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0xBCB JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x3C02 JUMPI POP PUSH2 0x3B34 SWAP2 SWAP3 PUSH2 0x4681 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x3C35 JUMPI JUMPDEST SWAP3 PUSH2 0x3B34 SWAP3 SWAP4 PUSH2 0x46EF JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD SWAP3 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x20 DUP5 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP5 PUSH2 0x3C84 JUMPI JUMPDEST POP SWAP3 SWAP1 PUSH2 0x3C2A JUMP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x3CAF JUMPI JUMPDEST DUP2 PUSH2 0x3C9C PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x57A JUMPI MLOAD SWAP4 POP PUSH2 0x3B34 PUSH2 0x3C7C JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3C8F JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1E0E JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3CD4 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH32 0x0 AND SWAP4 DUP5 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 SWAP5 DUP5 DUP7 SWAP3 DUP2 PUSH1 0x84 SWAP7 DUP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP12 MSTORE AND PUSH1 0x4 DUP11 ADD MSTORE AND PUSH1 0x24 DUP9 ADD MSTORE AND PUSH1 0x44 DUP7 ADD MSTORE AND PUSH1 0x64 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x10E3 JUMPI PUSH2 0x3B2B JUMPI POP JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1E0E JUMPI JUMP JUMPDEST SWAP2 DUP3 CALLDATALOAD DUP4 ADD SWAP2 PUSH2 0x3DDE PUSH1 0x20 DUP5 CALLDATALOAD SWAP6 DUP2 DUP7 ADD SWAP6 SUB ADD DUP6 PUSH2 0x3DB7 JUMP JUMPDEST GT PUSH2 0x11CF JUMPI JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP4 ADD SWAP2 PUSH2 0x3DDE PUSH1 0x20 DUP5 CALLDATALOAD SWAP6 DUP2 DUP7 ADD SWAP6 SUB ADD DUP6 PUSH2 0x3DB7 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 ADD CALLDATALOAD DUP4 ADD SWAP2 PUSH2 0x3DDE PUSH1 0x20 DUP5 CALLDATALOAD SWAP6 DUP2 DUP7 ADD SWAP6 SUB ADD DUP6 PUSH2 0x3DB7 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 EQ PUSH2 0x1E0E JUMPI PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND ADDRESS SUB PUSH2 0x3E78 JUMPI POP POP PUSH2 0x3B34 SWAP3 PUSH2 0x3BD8 JUMP JUMPDEST DUP1 DUP5 SWAP6 SWAP5 GT PUSH2 0x3E8C JUMPI PUSH2 0x3B34 SWAP5 AND SWAP3 PUSH2 0x3D03 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC4BD89A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP4 AND DUP5 DUP4 AND GT PUSH2 0x4021 JUMPI JUMPDEST PUSH3 0xFFFFFF SWAP1 DUP5 PUSH1 0x40 MLOAD SWAP5 DUP2 PUSH1 0x20 DUP8 ADD SWAP6 AND DUP6 MSTORE AND PUSH1 0x40 DUP6 ADD MSTORE AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x60 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x10EF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 PUSH2 0x401A SWAP2 DUP4 PUSH1 0x40 MSTORE DUP5 MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0x3FED PUSH1 0xA0 DUP3 ADD SWAP6 PUSH32 0x0 SWAP1 PUSH32 0x0 DUP9 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x55 SWAP5 SWAP3 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x60 SHL AND PUSH1 0x1 DUP5 ADD MSTORE PUSH1 0x15 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x392D JUMP JUMPDEST MLOAD SWAP1 KECCAK256 AND SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH2 0x3ED8 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0xBCB JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1E0E JUMPI JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH2 0x401A SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 SWAP3 PUSH1 0x60 SHL AND DUP5 MSTORE PUSH1 0x60 SHL AND PUSH1 0x34 DUP3 ADD MSTORE PUSH1 0x28 DUP2 MSTORE PUSH2 0x40CA DUP2 PUSH2 0x3911 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x413C PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 DUP8 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x55 SWAP5 SWAP3 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x60 SHL AND PUSH1 0x1 DUP5 ADD MSTORE PUSH1 0x15 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x392D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x418C JUMPI SWAP2 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST MLOAD SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0xBCB JUMPI PUSH2 0x41BF DUP2 PUSH2 0x4190 JUMP JUMPDEST SWAP2 PUSH1 0x40 PUSH2 0x41CE PUSH1 0x20 DUP5 ADD PUSH2 0x4190 JUMP JUMPDEST SWAP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0xBCB JUMPI SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x2 DUP3 LT PUSH2 0x4657 JUMPI DUP2 ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x41F9 DUP5 PUSH2 0x4039 JUMP JUMPDEST SWAP2 PUSH1 0x1 SWAP5 DUP2 DUP7 LT ISZERO PUSH2 0x1E57 JUMPI SWAP2 PUSH2 0x4217 PUSH1 0x20 SWAP5 PUSH2 0x1C1A DUP7 DUP7 ADD PUSH2 0x4039 JUMP JUMPDEST POP SWAP3 PUSH1 0x0 SWAP4 JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 ADD DUP6 LT PUSH2 0x4250 JUMPI POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x425E PUSH2 0x1CC4 DUP7 DUP7 DUP6 PUSH2 0x4029 JUMP JUMPDEST SWAP3 PUSH2 0x426F PUSH2 0x1CC4 DUP11 DUP9 ADD DUP8 DUP7 PUSH2 0x4029 JUMP JUMPDEST SWAP4 PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP6 PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP5 PUSH1 0x60 SWAP3 PUSH1 0x4 SWAP4 DUP1 DUP11 DUP7 DUP2 DUP12 GAS STATICCALL SWAP10 DUP11 ISZERO PUSH2 0x2566 JUMPI SWAP1 DUP14 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP13 PUSH2 0x4631 JUMPI JUMPDEST POP POP DUP8 DUP1 SWAP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP13 AND SWAP3 AND SWAP3 AND DUP3 EQ SWAP10 DUP11 PUSH1 0x0 EQ PUSH2 0x462B JUMPI JUMPDEST DUP7 MLOAD SWAP6 DUP7 DUP1 SWAP5 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP12 DUP9 DUP4 ADD MSTORE PUSH1 0x24 SWAP9 DUP10 SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4620 JUMPI DUP15 PUSH1 0x0 SWAP5 PUSH2 0x45EF JUMPI JUMPDEST POP POP DUP1 DUP4 SUB SWAP2 DUP2 ISZERO SWAP4 DUP5 DUP1 ISZERO PUSH2 0x45E7 JUMPI JUMPDEST PUSH2 0x45BF JUMPI DUP3 PUSH2 0x3E5 DUP1 DUP7 MUL SWAP6 DUP7 DIV EQ SWAP2 EQ OR ISZERO PUSH2 0x4592 JUMPI PUSH2 0x4377 SWAP1 DUP4 PUSH2 0x3CB7 JUMP JUMPDEST SWAP3 PUSH2 0x3E8 DUP1 DUP4 MUL SWAP3 DUP4 DIV EQ OR ISZERO PUSH2 0x4565 JUMPI PUSH2 0x439C SWAP3 SWAP2 PUSH2 0x4396 SWAP2 PUSH2 0x3DB7 JUMP JUMPDEST SWAP1 PUSH2 0x3CCA JUMP JUMPDEST SWAP8 ISZERO PUSH2 0x455D JUMPI PUSH1 0x0 SWAP8 SWAP1 JUMPDEST DUP10 DUP12 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP3 ADD DUP2 LT ISZERO PUSH2 0x4551 JUMPI SWAP2 PUSH2 0x1C1A PUSH2 0x1CC4 PUSH2 0x43ED SWAP4 PUSH1 0x2 PUSH2 0x4437 SWAP13 SWAP7 ADD SWAP1 DUP14 PUSH2 0x4029 JUMP JUMPDEST DUP2 SWAP9 SWAP2 PUSH32 0x0 PUSH32 0x0 PUSH2 0x4067 JUMP JUMPDEST SWAP7 JUMPDEST SWAP9 DUP6 MLOAD SWAP2 DUP14 DUP4 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP2 LT DUP7 DUP3 GT OR PUSH2 0x4524 JUMPI DUP9 MSTORE PUSH1 0x0 DUP5 MSTORE DUP2 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 DUP11 SWAP4 PUSH2 0x44B7 DUP3 SWAP7 DUP12 MLOAD SWAP13 DUP14 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE DUP14 DUP8 ADD MSTORE DUP14 DUP7 ADD MSTORE AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DC3 JUMPI SWAP1 DUP14 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x44DC JUMPI JUMPDEST POP POP POP POP POP SWAP5 ADD SWAP4 SWAP2 PUSH2 0x421D JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP1 SWAP6 SWAP7 POP GT PUSH2 0x44F8 JUMPI POP POP MSTORE DUP8 SWAP1 CODESIZE DUP1 DUP1 DUP1 DUP1 PUSH2 0x44CE JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST DUP8 PUSH1 0x41 DUP9 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST POP POP POP DUP12 SWAP6 PUSH1 0x0 PUSH2 0x4439 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST DUP6 PUSH1 0x11 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST DUP7 PUSH1 0x11 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST DUP7 DUP10 MLOAD PUSH32 0x7B9C891600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP2 ISZERO PUSH2 0x4356 JUMP JUMPDEST DUP2 DUP2 SWAP6 SWAP3 SWAP4 SWAP6 RETURNDATASIZE DUP4 GT PUSH2 0x4619 JUMPI JUMPDEST PUSH2 0x4607 DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP2 CODESIZE DUP15 PUSH2 0x4345 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x45FD JUMP JUMPDEST DUP8 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x4300 JUMP JUMPDEST DUP10 SWAP13 POP DUP10 SWAP3 POP SWAP1 DUP2 PUSH2 0x464E SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x221E JUMPI PUSH2 0x220D DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST POP SWAP12 SWAP1 SWAP2 PUSH2 0x42D7 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x394060AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 SWAP4 DUP2 SWAP4 GAS CALL ISZERO PUSH2 0x4691 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4554485F5452414E534645525F4641494C454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 PUSH1 0x44 PUSH1 0x20 SWAP3 PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP3 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x47BD JUMPI JUMPDEST POP ISZERO PUSH2 0x475F JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x4757 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"410:1670:14:-:0;;;-1:-1:-1;;;;;410:1670:14;;;;;;;;;-1:-1:-1;;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;410:1670:14;;;;2995:44:19;;;410:1670:14;;;;;;;3049:25:19;;;410:1670:14;;;;;;;;3084:33:19;;;410:1670:14;;;;;;;3127:33:19;;;410:1670:14;;;;;;;3170:39:19;;;410:1670:14;;;;;;;3219:25:19;;;410:1670:14;;;;;;;3254:18:19;;;410:1670:14;;;;;;;3282:30:19;;;410:1670:14;;;;;;;3322:26:19;;;410:1670:14;;;;;;;3358:37:19;;;410:1670:14;;;;;;;3405:27:19;;;410:1670:14;;;;;;;3442:32:19;;;410:1670:14;;;;;;;3484:34:19;;;410:1670:14;;;;;;3528:47:19;;;410:1670:14;;;;;;3585:67:19;;;410:1670:14;;;;;;3662:60:19;;;410:1670:14;;;;;;;;3732:45:19;410:1670:14;;3787:59:19;;410:1670:14;;3856:35:19;;410:1670:14;;3901:54:19;;-1:-1:-1;;;1321:17:31;410:1670:14;231:10:17;;-1:-1:-1;;;;;;231:10:17;;;;;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3787:59:19;410:1670:14;;;;;;;;;;;;;;;3856:35:19;410:1670:14;;;;;3901:54:19;410:1670:14;;;;;;;;;;;;-1:-1:-1;410:1670:14;;;;;-1:-1:-1;410:1670:14;;-1:-1:-1;410:1670:14;;;;;-1:-1:-1;;;;;410:1670:14;;;;;;:::o"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":3094,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_address_26115":{"entryPoint":3024,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_26116":{"entryPoint":3059,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_bytes_calldata_dyn_calldata":{"entryPoint":3127,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bool_fromMemory":{"entryPoint":15296,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":14851,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":2973,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint112_fromMemory":{"entryPoint":16784,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint112t_uint112t_uint32_fromMemory":{"entryPoint":16811,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint48":{"entryPoint":14832,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_uint256_bytes":{"entryPoint":15170,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_bytes":{"entryPoint":3176,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":14442,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_packed_stringliteral_8b1a_address_bytes32_bytes32":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"array_allocation_size_array_struct_AllowanceTransferDetails_dyn":{"entryPoint":14808,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":14702,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_address_dyn_calldata":{"entryPoint":16425,"id":null,"parameterSlots":3,"returnSlots":1},"checked_add_uint256":{"entryPoint":15799,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":15562,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":15543,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":16474,"id":null,"parameterSlots":2,"returnSlots":1},"extract_returndata":{"entryPoint":14760,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":14637,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_26134":{"entryPoint":14505,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_26146":{"entryPoint":14525,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_40219":{"entryPoint":14553,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_40221":{"entryPoint":14581,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_40223":{"entryPoint":14609,"id":null,"parameterSlots":1,"returnSlots":0},"fun_callAndTransfer721":{"entryPoint":14922,"id":2333,"parameterSlots":3,"returnSlots":2},"fun_classicSwap":{"entryPoint":16865,"id":4997,"parameterSlots":4,"returnSlots":0},"fun_computePoolAddress":{"entryPoint":16054,"id":4401,"parameterSlots":3,"returnSlots":1},"fun_execute_inner":{"entryPoint":3270,"id":null,"parameterSlots":4,"returnSlots":0},"fun_map":{"entryPoint":15239,"id":2496,"parameterSlots":1,"returnSlots":1},"fun_pairForPreSorted":{"entryPoint":16487,"id":4524,"parameterSlots":4,"returnSlots":1},"fun_pay":{"entryPoint":15320,"id":3152,"parameterSlots":3,"returnSlots":0},"fun_payOrPermit2Transfer":{"entryPoint":15948,"id":3665,"parameterSlots":4,"returnSlots":0},"fun_permit2TransferFrom":{"entryPoint":15619,"id":3586,"parameterSlots":4,"returnSlots":0},"fun_safeTransfer":{"entryPoint":18159,"id":9159,"parameterSlots":3,"returnSlots":0},"fun_safeTransferETH":{"entryPoint":18049,"id":9117,"parameterSlots":2,"returnSlots":0},"fun_sortTokens":{"entryPoint":16744,"id":4787,"parameterSlots":2,"returnSlots":2},"fun_toLengthOffset":{"entryPoint":15845,"id":3741,"parameterSlots":2,"returnSlots":2},"fun_toLengthOffset_26113":{"entryPoint":15812,"id":3741,"parameterSlots":2,"returnSlots":2},"fun_toLengthOffset_26152":{"entryPoint":15874,"id":3741,"parameterSlots":2,"returnSlots":2},"memory_array_index_access_struct_AllowanceTransferDetails_dyn":{"entryPoint":15779,"id":null,"parameterSlots":2,"returnSlots":1},"negate_int256":{"entryPoint":15903,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":16441,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"2617":[{"length":32,"start":9289},{"length":32,"start":9680}],"2621":[{"length":32,"start":5731},{"length":32,"start":5987},{"length":32,"start":8898},{"length":32,"start":10216},{"length":32,"start":15646}],"2624":[{"length":32,"start":11014}],"2627":[{"length":32,"start":13500}],"2630":[{"length":32,"start":13980}],"2633":[{"length":32,"start":11194}],"2636":[{"length":32,"start":12388},{"length":32,"start":12646}],"2638":[{"length":32,"start":12916}],"2640":[{"length":32,"start":12471},{"length":32,"start":14278}],"2642":[{"length":32,"start":13395}],"2644":[{"length":32,"start":12558}],"2646":[{"length":32,"start":11256}],"2649":[{"length":32,"start":11107}],"2653":[{"length":32,"start":665}],"2656":[{"length":32,"start":573}],"2659":[{"length":32,"start":801}],"2662":[{"length":32,"start":7236},{"length":32,"start":8276},{"length":32,"start":17427}],"2665":[{"length":32,"start":7203},{"length":32,"start":8243},{"length":32,"start":17394}],"2668":[{"length":32,"start":16237}],"2671":[{"length":32,"start":16203}]},"linkReferences":{},"object":"60a0604081815260049182361015610022575b505050361561002057600080fd5b005b600090813560e01c90816301ffc9a714610aaf5750806311c17848146106d4578063150b7a021461064757806324856bc31461057e5780633593564c1461043e578063709a1cc2146101d6578063bc197c81146101125763f23a6e6103610012573461010f5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010f576100ba610bd0565b506100c3610bf3565b506084359067ffffffffffffffff821161010f57506020926100e791369101610b9d565b5050517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b80fd5b503461010f5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010f5761014a610bd0565b50610153610bf3565b5067ffffffffffffffff906044358281116101d2576101759036908601610c37565b50506064358281116101d25761018e9036908601610c37565b505060843591821161010f57506020926101aa91369101610b9d565b5050517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5091903461043a57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104365783833567ffffffffffffffff81116101d25761022a829136908701610b9d565b90818551928392833781018381520390827f00000000000000000000000000000000000000000000000000000000000000005af16102666139a8565b501561040e5780517f70a082310000000000000000000000000000000000000000000000000000000081523084820152907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168383602481845afa9283156104045786936103cf575b5081517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169581019586526020860184905294849186918290899082906040015b03925af19384156103c5577f1e8f03f716bc104bf7d728131967a0c771e85ab54d09c1e2d6ed9e0bc4e2a16c94610398575b5051908152a180f35b6103b790843d86116103be575b6103af818361392d565b810190613bc0565b503861038f565b503d6103a5565b81513d87823e3d90fd5b9092508381813d83116103fd575b6103e7818361392d565b810103126103f957519161035d6102e4565b8580fd5b503d6103dd565b82513d88823e3d90fd5b9050517f7d529919000000000000000000000000000000000000000000000000000000008152fd5b8380fd5b8280fd5b50919060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a5767ffffffffffffffff823581811161057a5761048a9036908501610b9d565b916024359081116103f9576104a29036908601610c37565b929091604435421161055257333014610540576001958654958773ffffffffffffffffffffffffffffffffffffffff88160361051a5750509185949391610511937fffffffffffffffffffffffff00000000000000000000000000000000000000009586339116178755610cc6565b81541617905580f35b517f6f5ffb7e000000000000000000000000000000000000000000000000000000008152fd5b909192935061054f9450610cc6565b80f35b8585517f5bf6f916000000000000000000000000000000000000000000000000000000008152fd5b8480fd5b509190807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a5767ffffffffffffffff823581811161057a576105c99036908501610b9d565b916024359081116103f9576105e19036908601610c37565b929091333014610540576001958654958773ffffffffffffffffffffffffffffffffffffffff88160361051a5750509185949391610511937fffffffffffffffffffffffff00000000000000000000000000000000000000009586339116178755610cc6565b503461010f5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010f5761067f610bd0565b50610688610bf3565b506064359067ffffffffffffffff821161010f57506020926106ac91369101610b9d565b5050517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b50913461043a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a578035906024356044359167ffffffffffffffff92838111610aab5761072d9036908301610b9d565b91909287861394851580610aa1575b610a79578385018886820312610a75578535918211610a7557610760918601613a03565b5060208401359373ffffffffffffffffffffffffffffffffffffffff93848616809603610a755761079091613dc4565b929093602b8510610a4d578335968760601c9760178601968735958660601c936107c58c8662ffffff809760481c1691613eb6565b8633911603610a255715610a1b5750828a105b156107f157505050505050505061054f93503391613e4c565b909192939598506042819a95979a10156000146109d257806017116109ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901937f80000000000000000000000000000000000000000000000000000000000000008110156109ce5761086490613e1f565b97602b85106109a657926108f28b8261089a8f98959661094497602e859f9e9d9c9a013560601c908282109c60481c1691613eb6565b16988815610988576108c16401000276a49d5b83519687946020860152606085019161386a565b908c830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810184528361392d565b8851998a98899788967f128acb0800000000000000000000000000000000000000000000000000000000885233908801526024870152604486015216606484015260a0608484015260a4830190610c68565b03925af1801561097c5761095757505080f35b813d8311610975575b61096a818361392d565b8101031261010f5780f35b503d610960565b505051903d90823e3d90fd5b6108c173fffd8963efd1fc6a506488495d951d5263988d259d6108ad565b858b517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b8b80fd5b5050955050945095809591505484116109f3575061054f9394503391613e4c565b8590517fc980904d000000000000000000000000000000000000000000000000000000008152fd5b9a508983106107d8565b868e517f014e3613000000000000000000000000000000000000000000000000000000008152fd5b5087517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b8980fd5b8288517f19cf368b000000000000000000000000000000000000000000000000000000008152fd5b508882131561073c565b8680fd5b9050833461043a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261043a57357fffffffff00000000000000000000000000000000000000000000000000000000811680910361043a57602092507f4e2312e0000000000000000000000000000000000000000000000000000000008114908115610b73575b8115610b49575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610b42565b7f150b7a020000000000000000000000000000000000000000000000000000000081149150610b3b565b9181601f84011215610bcb5782359167ffffffffffffffff8311610bcb5760208381860195010111610bcb57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610bcb57565b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610bcb57565b359073ffffffffffffffffffffffffffffffffffffffff82168203610bcb57565b9181601f84011215610bcb5782359167ffffffffffffffff8311610bcb576020808501948460051b010111610bcb57565b919082519283825260005b848110610cb25750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610c73565b919290926080528281036138405791906000905b828210610ce75750505050565b8382959394951015611e575760059282841b60805101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe19182608051360301821215610bcb578160805101359767ffffffffffffffff8911610bcb576020836080510101988036038a13610bcb57606097603f90818989013560f81c166001976020821060001461347c5750601080821015612abf5750600880821015611b8957508061120357505050610d9c908a613e02565b92909860a0856080510101356000146111f957610dd373ffffffffffffffffffffffffffffffffffffffff600154169b5b35613b87565b9960408660805101013585829d927f80000000000000000000000000000000000000000000000000000000000000008314611141575b50959c95505b7f8000000000000000000000000000000000000000000000000000000000000000811015610bcb576042861061113a5730915b86602b11610bcb578d91601783013560601c9083359462ffffff8660601c96610e8773ffffffffffffffffffffffffffffffffffffffff92839260481c16868a613eb6565b16908488101561111e57806401000276a4965b602b60405199604060208c01528160608c015260808b0137600060ab8a015216604088015260a0875260c087019587871067ffffffffffffffff8811176110ef576040948288958688527f128acb080000000000000000000000000000000000000000000000000000000087521660c48a0152868a1060e48a01526101048901521661012487015260a06101448701528160007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4088610f5d610164820182610c68565b0301925af19283156110e35760009283946110a1575b5050610f87931060001461109a5750613e1f565b9a60428510610fc857309085601711610bcb5760177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe991019501949b610e0f565b50985098606091969597949392509160805101013511611070575b1580611043575b610ffc57506001019291929092610cda565b9061103f60409283519384937f2c4029e9000000000000000000000000000000000000000000000000000000008552600485015260248401526044830190610c68565b0390fd5b507f8000000000000000000000000000000000000000000000000000000000000000828501351615610fea565b60046040517f4566b5a8000000000000000000000000000000000000000000000000000000008152fd5b9050613e1f565b91929093506040843d6040116110db575b816110bf6040938661392d565b8101031261010f57505160e092909201519190610f8738610f73565b3d91506110b2565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8073fffd8963efd1fc6a506488495d951d5263988d2596610e9a565b8b91610e42565b6014919250106111cf576020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301523560601c5afa9081156110e35760009161119d575b503880610e09565b906020823d6020116111c7575b816111b76020938361392d565b8101031261010f57505138611195565b3d91506111aa565b60046040517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b610dd3309b610dcd565b6001819d9493969d9b9897959a999b146000146114c75750508161122992939450613e02565b9060a0846080510101356000146114bd5761125d73ffffffffffffffffffffffffffffffffffffffff600154169335613b87565b916060856080510101356000557f80000000000000000000000000000000000000000000000000000000000000006040866080510101351015610bcb576112ab604086608051010135613e1f565b602b83106111cf57813592601783013560601c9586928560601c96879660481c62ffffff166112db908689613eb6565b73ffffffffffffffffffffffffffffffffffffffff16938786106000149673ffffffffffffffffffffffffffffffffffffffff80956000956113766113ca9560409c6114a2576401000276a4935b856113448f51986040948a956020870152606086019161386a565b91168e830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810186528561392d565b8a519b8c9a8b998a987f128acb08000000000000000000000000000000000000000000000000000000008a52166004890152106024870152604486015216606484015260a0608484015260a4830190610c68565b03925af19182156110e3576000918293611464575b50604093101561145457506113f390613e1f565b915b6080510101350361142a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000555b610fe3565b60046040517f75e2f0ae000000000000000000000000000000000000000000000000000000008152fd5b61145e9150613e1f565b916113f5565b9250906040833d60401161149a575b816114806040938361392d565b8101031261010f57508151602090920151919060406113df565b3d9150611473565b73fffd8963efd1fc6a506488495d951d5263988d2593611329565b61125d3093610dcd565b6002810361151157505050611425925073ffffffffffffffffffffffffffffffffffffffff6001541661150a604060608560805101013594608051010135613b87565b9135613d03565b9193916003810361188357505060805181018084019390604090850312610bcb57823567ffffffffffffffff8111610bcb5782608051010192606084860312610bcb57604051946060860186811067ffffffffffffffff8211176110ef57604052602085013567ffffffffffffffff8111610bcb57850160208201809882011215610bcb576020810135906115a5826139d8565b926115b3604051948561392d565b8284526040602085019360071b830101918a8311610bcb57604001925b82841061181e575050505085526115e960408501610c16565b956020860196875260606040870195013585526040846080510101359067ffffffffffffffff8211610bcb57602061162a9261163096608051010101613a03565b50613de5565b909173ffffffffffffffffffffffffffffffffffffffff600154169473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b15610bcb5794929391906040519586947f2a2d80d100000000000000000000000000000000000000000000000000000000865260048601526060602486015260c48501935193606060648701528451809152602060e487019501906000905b8082106117a557505050946117499285949273ffffffffffffffffffffffffffffffffffffffff600098511660848701525160a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85840301604486015261386a565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156110e357611796575b50610fe3565b61179f906138a9565b38611790565b9197965091929394602060806001928a5173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff848201511684830152606065ffffffffffff918260408201511660408501520151166060820152019801920188969795949392916116e3565b608060208584030112610bcb57602060809160405161183c816138bd565b61184587610c16565b8152611852838801610c16565b83820152611862604088016139f0565b6040820152611873606088016139f0565b60608201528152019301926115d0565b600495509193508482036119f25750509091604060606118a98286608051010135613b87565b608051909501013573ffffffffffffffffffffffffffffffffffffffff9081169335168061191f5750479283106118f9575050806118e9575b5050610fe3565b6118f291614681565b38806118e2565b517fbb9278b6000000000000000000000000000000000000000000000000000000008152fd5b9391908051937f70a082310000000000000000000000000000000000000000000000000000000085523083860152602085602481895afa9485156119e7576000956119b3575b50841061198d5750508161197c575b505050610fe3565b611985926146ef565b388080611974565b517f675cae38000000000000000000000000000000000000000000000000000000008152fd5b90946020823d6020116119df575b816119ce6020938361392d565b8101031261010f5750519338611965565b3d91506119c1565b82513d6000823e3d90fd5b8103611a1f57506114259250611a18604060608460805101013593608051010135613b87565b9035613bd8565b90919060068103611b59575060805101606081013590604090611a4490820135613b87565b9282158015611b4e575b611b26573573ffffffffffffffffffffffffffffffffffffffff169384611a8a5750506114259250611a836127109147613cb7565b0490614681565b8151907f70a082310000000000000000000000000000000000000000000000000000000082523090820152602081602481885afa918215611b1c5750600091611ae8575b50611ae161142594939261271092613cb7565b04916146ef565b906020823d602011611b14575b81611b026020938361392d565b8101031261010f575051611ae1611ace565b3d9150611af5565b513d6000823e3d90fd5b8482517fdeaa01e6000000000000000000000000000000000000000000000000000000008152fd5b506127108311611a4e565b83602491604051917fd76a1e9e000000000000000000000000000000000000000000000000000000008352820152fd5b819d969d9b989794959a999b93929314600014611e9057505050604091611bb883836080510101359185613e02565b92909460a082608051010135600014611e8657611bee73ffffffffffffffffffffffffffffffffffffffff600154169135613b87565b908615611e5757611bfe85614039565b8760011015611e5757611c20611c6891611c1a60208901614039565b90614168565b907f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614067565b938481611e3d575b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860193868511611e0e57611cc494611cc973ffffffffffffffffffffffffffffffffffffffff9687928a85614029565b614039565b16948651947f70a082310000000000000000000000000000000000000000000000000000000091828752841693600499858b89015260249460208987818d5afa988915611e0357600099611dce575b509160209695949391611d2a936141e1565b8751968793849283528a8301525afa928315611dc357600093611d8e575b50906060611d5c926080510101359261405a565b10611d68575050610fe3565b517f689100ae000000000000000000000000000000000000000000000000000000008152fd5b90926020823d602011611dbb575b81611da96020938361392d565b8101031261010f575051916060611d48565b3d9150611d9c565b84513d6000823e3d90fd5b90986020823d602011611dfb575b81611de96020938361392d565b8101031261010f575051976020611d18565b3d9150611ddc565b8b513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b611e4f92611e4a88614039565b613e4c565b388084611c70565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b611bee3091610dcd565b919492939160098103612271575050611ea99082613e02565b608051840160a001351561226757611eda73ffffffffffffffffffffffffffffffffffffffff600154169335613b87565b92611ee4836139d8565b95611ef2604051978861392d565b83875283901b820160208701368211610bcb5783905b82821061224f575050506000946002875110612225576040816080510101359680517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611e0e5790815b611fb257505060805101606001358611611f88578215611e57576114259585611f8392611e4a85614039565b6141e1565b60046040517fc8ca61e7000000000000000000000000000000000000000000000000000000008152fd5b90977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89019750888811611e0e5773ffffffffffffffffffffffffffffffffffffffff6120026120789984613da3565b511661202e73ffffffffffffffffffffffffffffffffffffffff6120268c86613da3565b511682614168565b819a917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614067565b90604051907f0902f1ac00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff87165afa9a8b156110e357600092839c6121dc575b5073ffffffffffffffffffffffffffffffffffffffff16036121c2576dffffffffffffffffffffffffffff8091169916905b98801580156121ba575b612190578261211a91613cb7565b916103e892838102938185041490151715611e0e576121389161405a565b6103e590818102918183041490151715611e0e5761215591613cca565b60018101809111611e0e57978015611e0e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019081611f57565b60046040517f7b9c8916000000000000000000000000000000000000000000000000000000008152fd5b50811561210c565b6dffffffffffffffffffffffffffff998a16991690612102565b612215919c5073ffffffffffffffffffffffffffffffffffffffff935060603d811161221e575b61220d818361392d565b8101906141ab565b509b90926120d0565b503d612203565b60046040517f20db8267000000000000000000000000000000000000000000000000000000008152fd5b6020809161225c84610c16565b815201910190611f08565b611eda3093610dcd565b92945091600a81036123d75750608051830160e081013581019460208087013594509092916122a4919087030184613db7565b116111cf5773ffffffffffffffffffffffffffffffffffffffff93847f00000000000000000000000000000000000000000000000000000000000000001692856001541691843b15610bcb5760409587875198899687967f2b67b570000000000000000000000000000000000000000000000000000000008852600488015261232c90610c16565b166024860152808883608051010161234390610c16565b16604486015265ffffffffffff808360805101606001612362906139f0565b1660648701528260805101608001612379906139f0565b166084860152816080510160a00161239090610c16565b1660a48501526080510160c0013560c484015261010060e48401526123bc91610104840191870161386a565b03815a6000948591f1908115611b1c57506117965750610fe3565b600b81036125a1575050506123f6604080926080510101359235613b87565b91807f80000000000000000000000000000000000000000000000000000000000000008103612571575050475b8061243057505050610fe3565b73ffffffffffffffffffffffffffffffffffffffff90817f000000000000000000000000000000000000000000000000000000000000000016803b15610bcb578351927fd0e30db0000000000000000000000000000000000000000000000000000000008452600493600081868187875af1801561256657612557575b5030908616036124bf575b5050611974565b61251e9460006020948651978895869485937fa9059cbb00000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af1908115611b1c5750612538575b808080806124b8565b6125509060203d6020116103be576103af818361392d565b503861252f565b612560906138a9565b386124ad565b86513d6000823e3d90fd5b47101561242357600482517fbb9278b6000000000000000000000000000000000000000000000000000000008152fd5b600c810361273157505050906125b79035613b87565b9073ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001660408051937f70a08231000000000000000000000000000000000000000000000000000000008552600430818701526024916020878481885afa968715611dc3576000976126fd575b506080510183013586106126d65785612659575b50505050505050610fe3565b833b15610bcb57600091869183855196879485937f2e1a7d4d0000000000000000000000000000000000000000000000000000000085528401525af1908115611b1c57506126c7575b5030908316036126b7575b808080808061264d565b6126c091614681565b38806126ad565b6126d0906138a9565b386126a2565b82517fbb9278b6000000000000000000000000000000000000000000000000000000008152fd5b90966020823d602011612729575b816127186020938361392d565b8101031261010f5750519583612639565b3d915061270b565b600d810361298c575082608051010191602083019360208260805101850312610bcb573567ffffffffffffffff8111610bcb57849160805101019182011215610bcb57602081013590612783826139d8565b936040936127938551968761392d565b838652602086019285849560071b820101928311610bcb578501925b82841061292a575050505073ffffffffffffffffffffffffffffffffffffffff90816001541684519060005b8281106128be57505050817f00000000000000000000000000000000000000000000000000000000000000001691823b15610bcb5783517f0d58b1db000000000000000000000000000000000000000000000000000000008152602060048201529451602486018190528592604484019290916000915b81831061287a57505050509181600081819503925af1908115611b1c57506117965750610fe3565b91938395506080602091846060600195975182815116845282868201511686850152828d820151168d85015201511660608201520195019301909187949392612852565b81856128ca838a613da3565b51511603612901577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e0e576001016127db565b600486517fe7002877000000000000000000000000000000000000000000000000000000008152fd5b608060208584030112610bcb5760206080918751612947816138bd565b61295087610c16565b815261295d838801610c16565b8382015261296c898801610c16565b8982015261297c60608801610c16565b60608201528152019301926127af565b9294505050600e8103612a8e57506040918251907f70a0823100000000000000000000000000000000000000000000000000000000825260208260248173ffffffffffffffffffffffffffffffffffffffff806004983516888301528886608051010135165afa918215611dc357600092612a59575b5060805101606001351180159290612a1b575050610fe3565b517fa3281672000000000000000000000000000000000000000000000000000000006020820152908152909150612a51816138f5565b9038806118e2565b90916020823d602011612a86575b81612a746020938361392d565b8101031261010f575051906060612a02565b3d9150612a67565b602490604051907fd76a1e9e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9150915060189b95939897999692949b80831060001461304e57508103612b35575050506000925090612af3839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b90610fe3565b60118103612b8c575050506000925090612b50839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b60128103612be3575050506000925090612ba7839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b919392509060138103612d49575050909150357f0000000000000000000000000000000000000000000000000000000000000000916040600080825160208101907f8264fe98000000000000000000000000000000000000000000000000000000008252602487818301528152612c5981613911565b5190606086608051010135885af192612c706139a8565b948415612d0f578273ffffffffffffffffffffffffffffffffffffffff612c9e921694608051010135613b87565b90833b15610bcb5782517f8b72a2ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820152916000908390604490829084905af1908115611b1c57506117965750610fe3565b505091925050517fae9bdf0000000000000000000000000000000000000000000000000000000000602082015260048152612b2f816138f5565b60158103612e5a57505090604091828051917f6352211e0000000000000000000000000000000000000000000000000000000083526020836024816004976060816080510101358983015273ffffffffffffffffffffffffffffffffffffffff968791608051010135165afa928315612e4f57600093612e10575b5081903516911614918215612dda575050610fe3565b517f7dbe7e89000000000000000000000000000000000000000000000000000000006020820152908152909150612a51816138f5565b6020939193813d602011612e47575b81612e2c6020938361392d565b810103126101d2575190828216820361010f57509181612dc4565b3d9150612e1f565b85513d6000823e3d90fd5b60168103612f815750506040918251907efdd58e00000000000000000000000000000000000000000000000000000000825260208280612ecc60049660608660805101013590358884016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b038173ffffffffffffffffffffffffffffffffffffffff8886608051010135165afa918215611dc357600092612f4c575b5060809081510101351191821592612f16575050610fe3565b517f483a6929000000000000000000000000000000000000000000000000000000006020820152908152909150612a51816138f5565b90916020823d602011612f79575b81612f676020938361392d565b8101031261010f575051906080612efd565b3d9150612f5a565b909290601714612f92575050610fe3565b60409073ffffffffffffffffffffffffffffffffffffffff612fba8383608051010135613b87565b93351692833b15610bcb5782517f42842e0e00000000000000000000000000000000000000000000000000000000815260805130600483015273ffffffffffffffffffffffffffffffffffffffff909216602482015291016060013560448201529160009083908183816064810103925af1908115611b1c575061303f575b806118e2565b613048906138a9565b38613039565b939693821415905061308957505050612b2f92507f000000000000000000000000000000000000000000000000000000000000000091613a4a565b601981036130e05750505060009250906130a4839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b601a81036131375750505060009250906130fb839282613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b601b810361325e57505050600061314f819284613de5565b9390604094818651928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af19182916131926139a8565b926131a0575b505090610fe3565b73ffffffffffffffffffffffffffffffffffffffff6080838151010135166131cf606084608051010135613b87565b908251906131dc826138d9565b60008252803b15610bcb5761323894600080948651978895869485937ff242432a00000000000000000000000000000000000000000000000000000000855260a060c08360805101013592608051010135903060048701613b42565b03925af1908115611b1c575061324f575b80613198565b613258906138a9565b38613249565b91949091601c810361329957505050612b2f92507f000000000000000000000000000000000000000000000000000000000000000091613a4a565b9193929091601d81036134225750506060816080510101359060409173ffffffffffffffffffffffffffffffffffffffff6132da8484608051010135613b87565b9435168351947efdd58e0000000000000000000000000000000000000000000000000000000086526004936020878061333987308a84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0381865afa968715612566576000976133ed575b50608090815101013586106133c5578451613367816138d9565b60008152823b15610bcb576000946133af86928851998a97889687957ff242432a00000000000000000000000000000000000000000000000000000000875230908701613b42565b03925af1908115611b1c57506117965750610fe3565b8385517f675cae38000000000000000000000000000000000000000000000000000000008152fd5b90966020823d60201161341a575b816134086020938361392d565b8101031261010f57505195608061334d565b3d91506133fb565b929450925050601e8103612a8e575081613440600093928493613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b9499989a92506020819d9792969d989498146000146134e557505050505050806134a96000938493613de5565b81604051928392833781018481520391357f00000000000000000000000000000000000000000000000000000000000000005af1612b2f6139a8565b60219080820361365c5750505050909161350a6135028686613dc4565b969095613de5565b929061354c60409788519760208901997f24856bc3000000000000000000000000000000000000000000000000000000008b5260248a0152606489019161386a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc878203016044880152818152602082818301951b82010195856000915b8483106135de57505050505050505091816135d0600094938594037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261392d565b519082305af1612b2f6139a8565b90919293949596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085820301885288358284360301811215610bcb578301906020823592019167ffffffffffffffff8111610bcb578036038313610bcb5761364c60209283928b9561386a565b9a0198019695949301919061358a565b9297509350935060228195929514600014612a8e5750359060408093608051010135906000906002831015613814575050808491156000146137bf5750507f0000000000000000000000000000000000000000000000000000000000000000915b6000908051927f095ea7b300000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff600495168585015260206024937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858701526044809682855af19081601f3d1188600051141615166137b2575b50156137575750505050610fe3565b91600e7f415050524f56455f4641494c45440000000000000000000000000000000000009260206064969551957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b3b153d1715905038613748565b036137eb577f0000000000000000000000000000000000000000000000000000000000000000916136bd565b600482517f5461585f000000000000000000000000000000000000000000000000000000008152fd5b602492507f4e487b71000000000000000000000000000000000000000000000000000000008252600452fd5b60046040517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b67ffffffffffffffff81116110ef57604052565b6080810190811067ffffffffffffffff8211176110ef57604052565b6020810190811067ffffffffffffffff8211176110ef57604052565b6040810190811067ffffffffffffffff8211176110ef57604052565b6060810190811067ffffffffffffffff8211176110ef57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176110ef57604052565b67ffffffffffffffff81116110ef57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d156139d3573d906139b98261396e565b916139c7604051938461392d565b82523d6000602084013e565b606090565b67ffffffffffffffff81116110ef5760051b60200190565b359065ffffffffffff82168203610bcb57565b81601f82011215610bcb57803590613a1a8261396e565b92613a28604051948561392d565b82845260208383010111610bcb57816000926020809301838601378301015290565b919290613a579083613de5565b90938460405195869384378201906000958693838580955203918635905af192613a7f6139a8565b9284613a89575050565b73ffffffffffffffffffffffffffffffffffffffff606082013516613ab16040830135613b87565b91813b15610436576040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93909316602484015260800135604483015290919081908390606490829084905af1908115613b365750613b2b5750565b613b34906138a9565b565b604051903d90823e3d90fd5b9192613b8495949160a09473ffffffffffffffffffffffffffffffffffffffff8092168552166020840152604083015260608201528160808201520190610c68565b90565b73ffffffffffffffffffffffffffffffffffffffff9080821660018103613bb15750506001541690565b909150600203613b8457503090565b90816020910312610bcb57518015158103610bcb5790565b9092919073ffffffffffffffffffffffffffffffffffffffff1680613c025750613b349192614681565b7f80000000000000000000000000000000000000000000000000000000000000008214613c35575b92613b3492936146ef565b9050604051927f70a08231000000000000000000000000000000000000000000000000000000008452306004850152602084602481855afa9384156110e357600094613c84575b509290613c2a565b6020813d8211613caf575b81613c9c6020938361392d565b8101031261057a57519350613b34613c7c565b3d9150613c8f565b81810292918115918404141715611e0e57565b8115613cd4570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b919273ffffffffffffffffffffffffffffffffffffffff91827f00000000000000000000000000000000000000000000000000000000000000001693843b15610bcb5760009484869281608496816040519b8c9a8b997f36c78516000000000000000000000000000000000000000000000000000000008b521660048a01521660248801521660448601521660648401525af180156110e357613b2b5750565b8051821015611e575760209160051b010190565b91908201809211611e0e57565b918235830191613dde602084359581860195030185613db7565b116111cf57565b916020830135830191613dde602084359581860195030185613db7565b916060830135830191613dde602084359581860195030185613db7565b7f80000000000000000000000000000000000000000000000000000000000000008114611e0e5760000390565b92919073ffffffffffffffffffffffffffffffffffffffff8082163003613e78575050613b3492613bd8565b8084959411613e8c57613b34941692613d03565b60046040517fc4bd89a9000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff9283831684831611614021575b62ffffff90846040519481602087019516855216604085015216606083015260608252608082019082821067ffffffffffffffff8311176110ef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8061401a91836040528451902093613fed60a08201957f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000088917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6081018452018261392d565b5190201690565b909190613ed8565b9190811015611e575760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff81168103610bcb5790565b91908203918211611e0e57565b9173ffffffffffffffffffffffffffffffffffffffff9361401a916040519060208201927fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809260601b16845260601b166034820152602881526140ca81613911565b51902061413c604051938492602084019687917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261392d565b73ffffffffffffffffffffffffffffffffffffffff828116908216101561418c5791565b9091565b51906dffffffffffffffffffffffffffff82168203610bcb57565b90816060910312610bcb576141bf81614190565b9160406141ce60208401614190565b92015163ffffffff81168103610bcb5790565b9260028210614657578115611e57576141f984614039565b9160019481861015611e575791614217602094611c1a868601614039565b50926000935b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018510614250575050505050505050565b61425e611cc4868685614029565b9261426f611cc48a88018786614029565b936040908151957f0902f1ac00000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff80941694606092600493808a86818b5afa998a1561256657908d9594939291600091829c614631575b50508780916dffffffffffffffffffffffffffff8091169c16921692168214998a60001461462b575b8651958680947f70a082310000000000000000000000000000000000000000000000000000000082528b8883015260249889915afa928315614620578e6000946145ef575b5050808303918115938480156145e7575b6145bf57826103e58086029586041491141715614592576143779083613cb7565b926103e88083029283041417156145655761439c929161439691613db7565b90613cca565b971561455d57600097905b898b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe82018110156145515791611c1a611cc46143ed9360026144379c9601908d614029565b8198917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614067565b965b988551918d83019367ffffffffffffffff948481108682111761452457885260008452813b15610bcb5760008a936144b782968b519c8d97889687957f022c0d9f0000000000000000000000000000000000000000000000000000000087528d8701528d860152166044840152608060648401526084830190610c68565b03925af18015611dc357908d9695949392916144dc575b50505050509401939161421d565b9091929380959650116144f857505052879038808080806144ce565b6041907f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b876041887f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b5050508b956000614439565b6000906143a7565b856011867f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b866011877f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b8689517f7b9c8916000000000000000000000000000000000000000000000000000000008152fd5b508115614356565b8181959293953d8311614619575b614607818361392d565b8101031261010f57505191388e614345565b503d6145fd565b87513d6000823e3d90fd5b90614300565b899c50899250908161464e92903d1061221e5761220d818361392d565b509b90916142d7565b60046040517f394060ac000000000000000000000000000000000000000000000000000000008152fd5b600080809381935af11561469157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152fd5b91604460209260009273ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000008452166004830152602482015282855af19081601f3d116001600051141615166147bd575b501561475f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152fd5b3b153d171590503861475756fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x22 JUMPI JUMPDEST POP POP POP CALLDATASIZE ISZERO PUSH2 0x20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xAAF JUMPI POP DUP1 PUSH4 0x11C17848 EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x24856BC3 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0x3593564C EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x709A1CC2 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x112 JUMPI PUSH4 0xF23A6E61 SUB PUSH2 0x12 JUMPI CALLVALUE PUSH2 0x10F JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x10F JUMPI PUSH2 0xBA PUSH2 0xBD0 JUMP JUMPDEST POP PUSH2 0xC3 PUSH2 0xBF3 JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x10F JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xE7 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xB9D JUMP JUMPDEST POP POP MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x10F JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x10F JUMPI PUSH2 0x14A PUSH2 0xBD0 JUMP JUMPDEST POP PUSH2 0x153 PUSH2 0xBF3 JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1D2 JUMPI PUSH2 0x175 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST POP POP PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1D2 JUMPI PUSH2 0x18E SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST POP POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x10F JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0x1AA SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xB9D JUMP JUMPDEST POP POP MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 CALLVALUE PUSH2 0x43A JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x436 JUMPI DUP4 DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1D2 JUMPI PUSH2 0x22A DUP3 SWAP2 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP1 DUP2 DUP6 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP4 DUP2 MSTORE SUB SWAP1 DUP3 PUSH32 0x0 GAS CALL PUSH2 0x266 PUSH2 0x39A8 JUMP JUMPDEST POP ISZERO PUSH2 0x40E JUMPI DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP5 DUP3 ADD MSTORE SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP4 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x404 JUMPI DUP7 SWAP4 PUSH2 0x3CF JUMPI JUMPDEST POP DUP2 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP6 DUP2 ADD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD DUP5 SWAP1 MSTORE SWAP5 DUP5 SWAP2 DUP7 SWAP2 DUP3 SWAP1 DUP10 SWAP1 DUP3 SWAP1 PUSH1 0x40 ADD JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x3C5 JUMPI PUSH32 0x1E8F03F716BC104BF7D728131967A0C771E85AB54D09C1E2D6ED9E0BC4E2A16C SWAP5 PUSH2 0x398 JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST PUSH2 0x3B7 SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x3BE JUMPI JUMPDEST PUSH2 0x3AF DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3BC0 JUMP JUMPDEST POP CODESIZE PUSH2 0x38F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A5 JUMP JUMPDEST DUP2 MLOAD RETURNDATASIZE DUP8 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP3 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3FD JUMPI JUMPDEST PUSH2 0x3E7 DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x3F9 JUMPI MLOAD SWAP2 PUSH2 0x35D PUSH2 0x2E4 JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x3DD JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP MLOAD PUSH32 0x7D52991900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x57A JUMPI PUSH2 0x48A SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x3F9 JUMPI PUSH2 0x4A2 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x44 CALLDATALOAD TIMESTAMP GT PUSH2 0x552 JUMPI CALLER ADDRESS EQ PUSH2 0x540 JUMPI PUSH1 0x1 SWAP6 DUP7 SLOAD SWAP6 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SUB PUSH2 0x51A JUMPI POP POP SWAP2 DUP6 SWAP5 SWAP4 SWAP2 PUSH2 0x511 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP6 DUP7 CALLER SWAP2 AND OR DUP8 SSTORE PUSH2 0xCC6 JUMP JUMPDEST DUP2 SLOAD AND OR SWAP1 SSTORE DUP1 RETURN JUMPDEST MLOAD PUSH32 0x6F5FFB7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH2 0x54F SWAP5 POP PUSH2 0xCC6 JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP6 DUP6 MLOAD PUSH32 0x5BF6F91600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x57A JUMPI PUSH2 0x5C9 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x3F9 JUMPI PUSH2 0x5E1 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xC37 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 CALLER ADDRESS EQ PUSH2 0x540 JUMPI PUSH1 0x1 SWAP6 DUP7 SLOAD SWAP6 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SUB PUSH2 0x51A JUMPI POP POP SWAP2 DUP6 SWAP5 SWAP4 SWAP2 PUSH2 0x511 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP6 DUP7 CALLER SWAP2 AND OR DUP8 SSTORE PUSH2 0xCC6 JUMP JUMPDEST POP CALLVALUE PUSH2 0x10F JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x10F JUMPI PUSH2 0x67F PUSH2 0xBD0 JUMP JUMPDEST POP PUSH2 0x688 PUSH2 0xBF3 JUMP JUMPDEST POP PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x10F JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0x6AC SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xB9D JUMP JUMPDEST POP POP MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x43A JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0xAAB JUMPI PUSH2 0x72D SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xB9D JUMP JUMPDEST SWAP2 SWAP1 SWAP3 DUP8 DUP7 SGT SWAP5 DUP6 ISZERO DUP1 PUSH2 0xAA1 JUMPI JUMPDEST PUSH2 0xA79 JUMPI DUP4 DUP6 ADD DUP9 DUP7 DUP3 SUB SLT PUSH2 0xA75 JUMPI DUP6 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0xA75 JUMPI PUSH2 0x760 SWAP2 DUP7 ADD PUSH2 0x3A03 JUMP JUMPDEST POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP7 AND DUP1 SWAP7 SUB PUSH2 0xA75 JUMPI PUSH2 0x790 SWAP2 PUSH2 0x3DC4 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x2B DUP6 LT PUSH2 0xA4D JUMPI DUP4 CALLDATALOAD SWAP7 DUP8 PUSH1 0x60 SHR SWAP8 PUSH1 0x17 DUP7 ADD SWAP7 DUP8 CALLDATALOAD SWAP6 DUP7 PUSH1 0x60 SHR SWAP4 PUSH2 0x7C5 DUP13 DUP7 PUSH3 0xFFFFFF DUP1 SWAP8 PUSH1 0x48 SHR AND SWAP2 PUSH2 0x3EB6 JUMP JUMPDEST DUP7 CALLER SWAP2 AND SUB PUSH2 0xA25 JUMPI ISZERO PUSH2 0xA1B JUMPI POP DUP3 DUP11 LT JUMPDEST ISZERO PUSH2 0x7F1 JUMPI POP POP POP POP POP POP POP POP PUSH2 0x54F SWAP4 POP CALLER SWAP2 PUSH2 0x3E4C JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 SWAP9 POP PUSH1 0x42 DUP2 SWAP11 SWAP6 SWAP8 SWAP11 LT ISZERO PUSH1 0x0 EQ PUSH2 0x9D2 JUMPI DUP1 PUSH1 0x17 GT PUSH2 0x9CE JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD SWAP4 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x9CE JUMPI PUSH2 0x864 SWAP1 PUSH2 0x3E1F JUMP JUMPDEST SWAP8 PUSH1 0x2B DUP6 LT PUSH2 0x9A6 JUMPI SWAP3 PUSH2 0x8F2 DUP12 DUP3 PUSH2 0x89A DUP16 SWAP9 SWAP6 SWAP7 PUSH2 0x944 SWAP8 PUSH1 0x2E DUP6 SWAP16 SWAP15 SWAP14 SWAP13 SWAP11 ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 DUP3 DUP3 LT SWAP13 PUSH1 0x48 SHR AND SWAP2 PUSH2 0x3EB6 JUMP JUMPDEST AND SWAP9 DUP9 ISZERO PUSH2 0x988 JUMPI PUSH2 0x8C1 PUSH5 0x1000276A4 SWAP14 JUMPDEST DUP4 MLOAD SWAP7 DUP8 SWAP5 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP2 PUSH2 0x386A JUMP JUMPDEST SWAP1 DUP13 DUP4 ADD MSTORE SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0x392D JUMP JUMPDEST DUP9 MLOAD SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH32 0x128ACB0800000000000000000000000000000000000000000000000000000000 DUP9 MSTORE CALLER SWAP1 DUP9 ADD MSTORE PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD MSTORE AND PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x97C JUMPI PUSH2 0x957 JUMPI POP POP DUP1 RETURN JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x975 JUMPI JUMPDEST PUSH2 0x96A DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI DUP1 RETURN JUMPDEST POP RETURNDATASIZE PUSH2 0x960 JUMP JUMPDEST POP POP MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8C1 PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 SWAP14 PUSH2 0x8AD JUMP JUMPDEST DUP6 DUP12 MLOAD PUSH32 0x3B99B53D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP12 DUP1 REVERT JUMPDEST POP POP SWAP6 POP POP SWAP5 POP SWAP6 DUP1 SWAP6 SWAP2 POP SLOAD DUP5 GT PUSH2 0x9F3 JUMPI POP PUSH2 0x54F SWAP4 SWAP5 POP CALLER SWAP2 PUSH2 0x3E4C JUMP JUMPDEST DUP6 SWAP1 MLOAD PUSH32 0xC980904D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP11 POP DUP10 DUP4 LT PUSH2 0x7D8 JUMP JUMPDEST DUP7 DUP15 MLOAD PUSH32 0x14E361300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP8 MLOAD PUSH32 0x3B99B53D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP10 DUP1 REVERT JUMPDEST DUP3 DUP9 MLOAD PUSH32 0x19CF368B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP9 DUP3 SGT ISZERO PUSH2 0x73C JUMP JUMPDEST DUP7 DUP1 REVERT JUMPDEST SWAP1 POP DUP4 CALLVALUE PUSH2 0x43A JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x43A JUMPI CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x43A JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0xB73 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xB49 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ DUP4 PUSH2 0xB42 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0xB3B JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0xBCB JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xBCB JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0xBCB JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0xBCB JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xBCB JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0xBCB JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0xCB2 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 ADD DUP2 ADD MLOAD DUP5 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xC73 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP3 PUSH1 0x80 MSTORE DUP3 DUP2 SUB PUSH2 0x3840 JUMPI SWAP2 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xCE7 JUMPI POP POP POP POP JUMP JUMPDEST DUP4 DUP3 SWAP6 SWAP4 SWAP5 SWAP6 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x5 SWAP3 DUP3 DUP5 SHL PUSH1 0x80 MLOAD ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 SWAP2 DUP3 PUSH1 0x80 MLOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0xBCB JUMPI DUP2 PUSH1 0x80 MLOAD ADD CALLDATALOAD SWAP8 PUSH8 0xFFFFFFFFFFFFFFFF DUP10 GT PUSH2 0xBCB JUMPI PUSH1 0x20 DUP4 PUSH1 0x80 MLOAD ADD ADD SWAP9 DUP1 CALLDATASIZE SUB DUP11 SGT PUSH2 0xBCB JUMPI PUSH1 0x60 SWAP8 PUSH1 0x3F SWAP1 DUP2 DUP10 DUP10 ADD CALLDATALOAD PUSH1 0xF8 SHR AND PUSH1 0x1 SWAP8 PUSH1 0x20 DUP3 LT PUSH1 0x0 EQ PUSH2 0x347C JUMPI POP PUSH1 0x10 DUP1 DUP3 LT ISZERO PUSH2 0x2ABF JUMPI POP PUSH1 0x8 DUP1 DUP3 LT ISZERO PUSH2 0x1B89 JUMPI POP DUP1 PUSH2 0x1203 JUMPI POP POP POP PUSH2 0xD9C SWAP1 DUP11 PUSH2 0x3E02 JUMP JUMPDEST SWAP3 SWAP1 SWAP9 PUSH1 0xA0 DUP6 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 EQ PUSH2 0x11F9 JUMPI PUSH2 0xDD3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP12 JUMPDEST CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP10 PUSH1 0x40 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD DUP6 DUP3 SWAP14 SWAP3 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 EQ PUSH2 0x1141 JUMPI JUMPDEST POP SWAP6 SWAP13 SWAP6 POP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0xBCB JUMPI PUSH1 0x42 DUP7 LT PUSH2 0x113A JUMPI ADDRESS SWAP2 JUMPDEST DUP7 PUSH1 0x2B GT PUSH2 0xBCB JUMPI DUP14 SWAP2 PUSH1 0x17 DUP4 ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 DUP4 CALLDATALOAD SWAP5 PUSH3 0xFFFFFF DUP7 PUSH1 0x60 SHR SWAP7 PUSH2 0xE87 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP3 PUSH1 0x48 SHR AND DUP7 DUP11 PUSH2 0x3EB6 JUMP JUMPDEST AND SWAP1 DUP5 DUP9 LT ISZERO PUSH2 0x111E JUMPI DUP1 PUSH5 0x1000276A4 SWAP7 JUMPDEST PUSH1 0x2B PUSH1 0x40 MLOAD SWAP10 PUSH1 0x40 PUSH1 0x20 DUP13 ADD MSTORE DUP2 PUSH1 0x60 DUP13 ADD MSTORE PUSH1 0x80 DUP12 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xAB DUP11 ADD MSTORE AND PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 MSTORE PUSH1 0xC0 DUP8 ADD SWAP6 DUP8 DUP8 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP9 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 SWAP5 DUP3 DUP9 SWAP6 DUP7 DUP9 MSTORE PUSH32 0x128ACB0800000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0xC4 DUP11 ADD MSTORE DUP7 DUP11 LT PUSH1 0xE4 DUP11 ADD MSTORE PUSH2 0x104 DUP10 ADD MSTORE AND PUSH2 0x124 DUP8 ADD MSTORE PUSH1 0xA0 PUSH2 0x144 DUP8 ADD MSTORE DUP2 PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 DUP9 PUSH2 0xF5D PUSH2 0x164 DUP3 ADD DUP3 PUSH2 0xC68 JUMP JUMPDEST SUB ADD SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP3 DUP4 SWAP5 PUSH2 0x10A1 JUMPI JUMPDEST POP POP PUSH2 0xF87 SWAP4 LT PUSH1 0x0 EQ PUSH2 0x109A JUMPI POP PUSH2 0x3E1F JUMP JUMPDEST SWAP11 PUSH1 0x42 DUP6 LT PUSH2 0xFC8 JUMPI ADDRESS SWAP1 DUP6 PUSH1 0x17 GT PUSH2 0xBCB JUMPI PUSH1 0x17 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 SWAP2 ADD SWAP6 ADD SWAP5 SWAP12 PUSH2 0xE0F JUMP JUMPDEST POP SWAP9 POP SWAP9 PUSH1 0x60 SWAP2 SWAP7 SWAP6 SWAP8 SWAP5 SWAP4 SWAP3 POP SWAP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD GT PUSH2 0x1070 JUMPI JUMPDEST ISZERO DUP1 PUSH2 0x1043 JUMPI JUMPDEST PUSH2 0xFFC JUMPI POP PUSH1 0x1 ADD SWAP3 SWAP2 SWAP3 SWAP1 SWAP3 PUSH2 0xCDA JUMP JUMPDEST SWAP1 PUSH2 0x103F PUSH1 0x40 SWAP3 DUP4 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x2C4029E900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 DUP6 ADD CALLDATALOAD AND ISZERO PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4566B5A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x3E1F JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP4 POP PUSH1 0x40 DUP5 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x10DB JUMPI JUMPDEST DUP2 PUSH2 0x10BF PUSH1 0x40 SWAP4 DUP7 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD PUSH1 0xE0 SWAP3 SWAP1 SWAP3 ADD MLOAD SWAP2 SWAP1 PUSH2 0xF87 CODESIZE PUSH2 0xF73 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 SWAP7 PUSH2 0xE9A JUMP JUMPDEST DUP12 SWAP2 PUSH2 0xE42 JUMP JUMPDEST PUSH1 0x14 SWAP2 SWAP3 POP LT PUSH2 0x11CF JUMPI PUSH1 0x20 PUSH1 0x24 SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE CALLDATALOAD PUSH1 0x60 SHR GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP2 PUSH2 0x119D JUMPI JUMPDEST POP CODESIZE DUP1 PUSH2 0xE09 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x11C7 JUMPI JUMPDEST DUP2 PUSH2 0x11B7 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD CODESIZE PUSH2 0x1195 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x11AA JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x3B99B53D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0xDD3 ADDRESS SWAP12 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP14 SWAP5 SWAP4 SWAP7 SWAP14 SWAP12 SWAP9 SWAP8 SWAP6 SWAP11 SWAP10 SWAP12 EQ PUSH1 0x0 EQ PUSH2 0x14C7 JUMPI POP POP DUP2 PUSH2 0x1229 SWAP3 SWAP4 SWAP5 POP PUSH2 0x3E02 JUMP JUMPDEST SWAP1 PUSH1 0xA0 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 EQ PUSH2 0x14BD JUMPI PUSH2 0x125D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP4 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP6 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 SSTORE PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD LT ISZERO PUSH2 0xBCB JUMPI PUSH2 0x12AB PUSH1 0x40 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3E1F JUMP JUMPDEST PUSH1 0x2B DUP4 LT PUSH2 0x11CF JUMPI DUP2 CALLDATALOAD SWAP3 PUSH1 0x17 DUP4 ADD CALLDATALOAD PUSH1 0x60 SHR SWAP6 DUP7 SWAP3 DUP6 PUSH1 0x60 SHR SWAP7 DUP8 SWAP7 PUSH1 0x48 SHR PUSH3 0xFFFFFF AND PUSH2 0x12DB SWAP1 DUP7 DUP10 PUSH2 0x3EB6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 DUP8 DUP7 LT PUSH1 0x0 EQ SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP6 PUSH1 0x0 SWAP6 PUSH2 0x1376 PUSH2 0x13CA SWAP6 PUSH1 0x40 SWAP13 PUSH2 0x14A2 JUMPI PUSH5 0x1000276A4 SWAP4 JUMPDEST DUP6 PUSH2 0x1344 DUP16 MLOAD SWAP9 PUSH1 0x40 SWAP5 DUP11 SWAP6 PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP2 PUSH2 0x386A JUMP JUMPDEST SWAP2 AND DUP15 DUP4 ADD MSTORE SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP7 MSTORE DUP6 PUSH2 0x392D JUMP JUMPDEST DUP11 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP9 PUSH32 0x128ACB0800000000000000000000000000000000000000000000000000000000 DUP11 MSTORE AND PUSH1 0x4 DUP10 ADD MSTORE LT PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD MSTORE AND PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP2 DUP3 SWAP4 PUSH2 0x1464 JUMPI JUMPDEST POP PUSH1 0x40 SWAP4 LT ISZERO PUSH2 0x1454 JUMPI POP PUSH2 0x13F3 SWAP1 PUSH2 0x3E1F JUMP JUMPDEST SWAP2 JUMPDEST PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SUB PUSH2 0x142A JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SSTORE JUMPDEST PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x75E2F0AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x145E SWAP2 POP PUSH2 0x3E1F JUMP JUMPDEST SWAP2 PUSH2 0x13F5 JUMP JUMPDEST SWAP3 POP SWAP1 PUSH1 0x40 DUP4 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x149A JUMPI JUMPDEST DUP2 PUSH2 0x1480 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP DUP2 MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP2 SWAP1 PUSH1 0x40 PUSH2 0x13DF JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1473 JUMP JUMPDEST PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 SWAP4 PUSH2 0x1329 JUMP JUMPDEST PUSH2 0x125D ADDRESS SWAP4 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x1511 JUMPI POP POP POP PUSH2 0x1425 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND PUSH2 0x150A PUSH1 0x40 PUSH1 0x60 DUP6 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 CALLDATALOAD PUSH2 0x3D03 JUMP JUMPDEST SWAP2 SWAP4 SWAP2 PUSH1 0x3 DUP2 SUB PUSH2 0x1883 JUMPI POP POP PUSH1 0x80 MLOAD DUP2 ADD DUP1 DUP5 ADD SWAP4 SWAP1 PUSH1 0x40 SWAP1 DUP6 SUB SLT PUSH2 0xBCB JUMPI DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP3 PUSH1 0x80 MLOAD ADD ADD SWAP3 PUSH1 0x60 DUP5 DUP7 SUB SLT PUSH2 0xBCB JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH1 0x60 DUP7 ADD DUP7 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP6 ADD PUSH1 0x20 DUP3 ADD DUP1 SWAP9 DUP3 ADD SLT ISZERO PUSH2 0xBCB JUMPI PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x15A5 DUP3 PUSH2 0x39D8 JUMP JUMPDEST SWAP3 PUSH2 0x15B3 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x392D JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x40 PUSH1 0x20 DUP6 ADD SWAP4 PUSH1 0x7 SHL DUP4 ADD ADD SWAP2 DUP11 DUP4 GT PUSH2 0xBCB JUMPI PUSH1 0x40 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x181E JUMPI POP POP POP POP DUP6 MSTORE PUSH2 0x15E9 PUSH1 0x40 DUP6 ADD PUSH2 0xC16 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP7 ADD SWAP7 DUP8 MSTORE PUSH1 0x60 PUSH1 0x40 DUP8 ADD SWAP6 ADD CALLDATALOAD DUP6 MSTORE PUSH1 0x40 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xBCB JUMPI PUSH1 0x20 PUSH2 0x162A SWAP3 PUSH2 0x1630 SWAP7 PUSH1 0x80 MLOAD ADD ADD ADD PUSH2 0x3A03 JUMP JUMPDEST POP PUSH2 0x3DE5 JUMP JUMPDEST SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI SWAP5 SWAP3 SWAP4 SWAP2 SWAP1 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD SWAP4 MLOAD SWAP4 PUSH1 0x60 PUSH1 0x64 DUP8 ADD MSTORE DUP5 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH1 0xE4 DUP8 ADD SWAP6 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x17A5 JUMPI POP POP POP SWAP5 PUSH2 0x1749 SWAP3 DUP6 SWAP5 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SWAP9 MLOAD AND PUSH1 0x84 DUP8 ADD MSTORE MLOAD PUSH1 0xA4 DUP7 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP6 DUP5 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x386A JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x10E3 JUMPI PUSH2 0x1796 JUMPI JUMPDEST POP PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x179F SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x1790 JUMP JUMPDEST SWAP2 SWAP8 SWAP7 POP SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP3 ADD MLOAD AND DUP5 DUP4 ADD MSTORE PUSH1 0x60 PUSH6 0xFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP9 SWAP7 SWAP8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x16E3 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x20 DUP6 DUP5 SUB ADD SLT PUSH2 0xBCB JUMPI PUSH1 0x20 PUSH1 0x80 SWAP2 PUSH1 0x40 MLOAD PUSH2 0x183C DUP2 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x1845 DUP8 PUSH2 0xC16 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1852 DUP4 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0x1862 PUSH1 0x40 DUP9 ADD PUSH2 0x39F0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x1873 PUSH1 0x60 DUP9 ADD PUSH2 0x39F0 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x15D0 JUMP JUMPDEST PUSH1 0x4 SWAP6 POP SWAP2 SWAP4 POP DUP5 DUP3 SUB PUSH2 0x19F2 JUMPI POP POP SWAP1 SWAP2 PUSH1 0x40 PUSH1 0x60 PUSH2 0x18A9 DUP3 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST PUSH1 0x80 MLOAD SWAP1 SWAP6 ADD ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP4 CALLDATALOAD AND DUP1 PUSH2 0x191F JUMPI POP SELFBALANCE SWAP3 DUP4 LT PUSH2 0x18F9 JUMPI POP POP DUP1 PUSH2 0x18E9 JUMPI JUMPDEST POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x18F2 SWAP2 PUSH2 0x4681 JUMP JUMPDEST CODESIZE DUP1 PUSH2 0x18E2 JUMP JUMPDEST MLOAD PUSH32 0xBB9278B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP4 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS DUP4 DUP7 ADD MSTORE PUSH1 0x20 DUP6 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x19E7 JUMPI PUSH1 0x0 SWAP6 PUSH2 0x19B3 JUMPI JUMPDEST POP DUP5 LT PUSH2 0x198D JUMPI POP POP DUP2 PUSH2 0x197C JUMPI JUMPDEST POP POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x1985 SWAP3 PUSH2 0x46EF JUMP JUMPDEST CODESIZE DUP1 DUP1 PUSH2 0x1974 JUMP JUMPDEST MLOAD PUSH32 0x675CAE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP5 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x19DF JUMPI JUMPDEST DUP2 PUSH2 0x19CE PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP4 CODESIZE PUSH2 0x1965 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x19C1 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP2 SUB PUSH2 0x1A1F JUMPI POP PUSH2 0x1425 SWAP3 POP PUSH2 0x1A18 PUSH1 0x40 PUSH1 0x60 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x3BD8 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH1 0x6 DUP2 SUB PUSH2 0x1B59 JUMPI POP PUSH1 0x80 MLOAD ADD PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 SWAP1 PUSH2 0x1A44 SWAP1 DUP3 ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP3 DUP3 ISZERO DUP1 ISZERO PUSH2 0x1B4E JUMPI JUMPDEST PUSH2 0x1B26 JUMPI CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 DUP5 PUSH2 0x1A8A JUMPI POP POP PUSH2 0x1425 SWAP3 POP PUSH2 0x1A83 PUSH2 0x2710 SWAP2 SELFBALANCE PUSH2 0x3CB7 JUMP JUMPDEST DIV SWAP1 PUSH2 0x4681 JUMP JUMPDEST DUP2 MLOAD SWAP1 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1B1C JUMPI POP PUSH1 0x0 SWAP2 PUSH2 0x1AE8 JUMPI JUMPDEST POP PUSH2 0x1AE1 PUSH2 0x1425 SWAP5 SWAP4 SWAP3 PUSH2 0x2710 SWAP3 PUSH2 0x3CB7 JUMP JUMPDEST DIV SWAP2 PUSH2 0x46EF JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1B14 JUMPI JUMPDEST DUP2 PUSH2 0x1B02 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD PUSH2 0x1AE1 PUSH2 0x1ACE JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1AF5 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 DUP3 MLOAD PUSH32 0xDEAA01E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH2 0x2710 DUP4 GT PUSH2 0x1A4E JUMP JUMPDEST DUP4 PUSH1 0x24 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xD76A1E9E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST DUP2 SWAP14 SWAP7 SWAP14 SWAP12 SWAP9 SWAP8 SWAP5 SWAP6 SWAP11 SWAP10 SWAP12 SWAP4 SWAP3 SWAP4 EQ PUSH1 0x0 EQ PUSH2 0x1E90 JUMPI POP POP POP PUSH1 0x40 SWAP2 PUSH2 0x1BB8 DUP4 DUP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP2 DUP6 PUSH2 0x3E02 JUMP JUMPDEST SWAP3 SWAP1 SWAP5 PUSH1 0xA0 DUP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH1 0x0 EQ PUSH2 0x1E86 JUMPI PUSH2 0x1BEE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP2 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 DUP7 ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x1BFE DUP6 PUSH2 0x4039 JUMP JUMPDEST DUP8 PUSH1 0x1 LT ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x1C20 PUSH2 0x1C68 SWAP2 PUSH2 0x1C1A PUSH1 0x20 DUP10 ADD PUSH2 0x4039 JUMP JUMPDEST SWAP1 PUSH2 0x4168 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH32 0x0 PUSH2 0x4067 JUMP JUMPDEST SWAP4 DUP5 DUP2 PUSH2 0x1E3D JUMPI JUMPDEST POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD SWAP4 DUP7 DUP6 GT PUSH2 0x1E0E JUMPI PUSH2 0x1CC4 SWAP5 PUSH2 0x1CC9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 SWAP3 DUP11 DUP6 PUSH2 0x4029 JUMP JUMPDEST PUSH2 0x4039 JUMP JUMPDEST AND SWAP5 DUP7 MLOAD SWAP5 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 SWAP2 DUP3 DUP8 MSTORE DUP5 AND SWAP4 PUSH1 0x4 SWAP10 DUP6 DUP12 DUP10 ADD MSTORE PUSH1 0x24 SWAP5 PUSH1 0x20 DUP10 DUP8 DUP2 DUP14 GAS STATICCALL SWAP9 DUP10 ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 SWAP10 PUSH2 0x1DCE JUMPI JUMPDEST POP SWAP2 PUSH1 0x20 SWAP7 SWAP6 SWAP5 SWAP4 SWAP2 PUSH2 0x1D2A SWAP4 PUSH2 0x41E1 JUMP JUMPDEST DUP8 MLOAD SWAP7 DUP8 SWAP4 DUP5 SWAP3 DUP4 MSTORE DUP11 DUP4 ADD MSTORE GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP4 PUSH2 0x1D8E JUMPI JUMPDEST POP SWAP1 PUSH1 0x60 PUSH2 0x1D5C SWAP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP3 PUSH2 0x405A JUMP JUMPDEST LT PUSH2 0x1D68 JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0x689100AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP3 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1DBB JUMPI JUMPDEST DUP2 PUSH2 0x1DA9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP2 PUSH1 0x60 PUSH2 0x1D48 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1D9C JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP9 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1DFB JUMPI JUMPDEST DUP2 PUSH2 0x1DE9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP8 PUSH1 0x20 PUSH2 0x1D18 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1DDC JUMP JUMPDEST DUP12 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E4F SWAP3 PUSH2 0x1E4A DUP9 PUSH2 0x4039 JUMP JUMPDEST PUSH2 0x3E4C JUMP JUMPDEST CODESIZE DUP1 DUP5 PUSH2 0x1C70 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1BEE ADDRESS SWAP2 PUSH2 0xDCD JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP4 SWAP2 PUSH1 0x9 DUP2 SUB PUSH2 0x2271 JUMPI POP POP PUSH2 0x1EA9 SWAP1 DUP3 PUSH2 0x3E02 JUMP JUMPDEST PUSH1 0x80 MLOAD DUP5 ADD PUSH1 0xA0 ADD CALLDATALOAD ISZERO PUSH2 0x2267 JUMPI PUSH2 0x1EDA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SLOAD AND SWAP4 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP3 PUSH2 0x1EE4 DUP4 PUSH2 0x39D8 JUMP JUMPDEST SWAP6 PUSH2 0x1EF2 PUSH1 0x40 MLOAD SWAP8 DUP9 PUSH2 0x392D JUMP JUMPDEST DUP4 DUP8 MSTORE DUP4 SWAP1 SHL DUP3 ADD PUSH1 0x20 DUP8 ADD CALLDATASIZE DUP3 GT PUSH2 0xBCB JUMPI DUP4 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x224F JUMPI POP POP POP PUSH1 0x0 SWAP5 PUSH1 0x2 DUP8 MLOAD LT PUSH2 0x2225 JUMPI PUSH1 0x40 DUP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP7 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1E0E JUMPI SWAP1 DUP2 JUMPDEST PUSH2 0x1FB2 JUMPI POP POP PUSH1 0x80 MLOAD ADD PUSH1 0x60 ADD CALLDATALOAD DUP7 GT PUSH2 0x1F88 JUMPI DUP3 ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x1425 SWAP6 DUP6 PUSH2 0x1F83 SWAP3 PUSH2 0x1E4A DUP6 PUSH2 0x4039 JUMP JUMPDEST PUSH2 0x41E1 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC8CA61E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD SWAP8 POP DUP9 DUP9 GT PUSH2 0x1E0E JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2002 PUSH2 0x2078 SWAP10 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST MLOAD AND PUSH2 0x202E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2026 DUP13 DUP7 PUSH2 0x3DA3 JUMP JUMPDEST MLOAD AND DUP3 PUSH2 0x4168 JUMP JUMPDEST DUP2 SWAP11 SWAP2 PUSH32 0x0 PUSH32 0x0 PUSH2 0x4067 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x60 DUP3 PUSH1 0x4 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND GAS STATICCALL SWAP11 DUP12 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP3 DUP4 SWAP13 PUSH2 0x21DC JUMPI JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x21C2 JUMPI PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP10 AND SWAP1 JUMPDEST SWAP9 DUP1 ISZERO DUP1 ISZERO PUSH2 0x21BA JUMPI JUMPDEST PUSH2 0x2190 JUMPI DUP3 PUSH2 0x211A SWAP2 PUSH2 0x3CB7 JUMP JUMPDEST SWAP2 PUSH2 0x3E8 SWAP3 DUP4 DUP2 MUL SWAP4 DUP2 DUP6 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1E0E JUMPI PUSH2 0x2138 SWAP2 PUSH2 0x405A JUMP JUMPDEST PUSH2 0x3E5 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1E0E JUMPI PUSH2 0x2155 SWAP2 PUSH2 0x3CCA JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1E0E JUMPI SWAP8 DUP1 ISZERO PUSH2 0x1E0E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 DUP2 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x7B9C891600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP2 ISZERO PUSH2 0x210C JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP10 DUP11 AND SWAP10 AND SWAP1 PUSH2 0x2102 JUMP JUMPDEST PUSH2 0x2215 SWAP2 SWAP13 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 POP PUSH1 0x60 RETURNDATASIZE DUP2 GT PUSH2 0x221E JUMPI JUMPDEST PUSH2 0x220D DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x41AB JUMP JUMPDEST POP SWAP12 SWAP1 SWAP3 PUSH2 0x20D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x20DB826700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x225C DUP5 PUSH2 0xC16 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1F08 JUMP JUMPDEST PUSH2 0x1EDA ADDRESS SWAP4 PUSH2 0xDCD JUMP JUMPDEST SWAP3 SWAP5 POP SWAP2 PUSH1 0xA DUP2 SUB PUSH2 0x23D7 JUMPI POP PUSH1 0x80 MLOAD DUP4 ADD PUSH1 0xE0 DUP2 ADD CALLDATALOAD DUP2 ADD SWAP5 PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP5 POP SWAP1 SWAP3 SWAP2 PUSH2 0x22A4 SWAP2 SWAP1 DUP8 SUB ADD DUP5 PUSH2 0x3DB7 JUMP JUMPDEST GT PUSH2 0x11CF JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 PUSH32 0x0 AND SWAP3 DUP6 PUSH1 0x1 SLOAD AND SWAP2 DUP5 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x40 SWAP6 DUP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP7 PUSH32 0x2B67B57000000000000000000000000000000000000000000000000000000000 DUP9 MSTORE PUSH1 0x4 DUP9 ADD MSTORE PUSH2 0x232C SWAP1 PUSH2 0xC16 JUMP JUMPDEST AND PUSH1 0x24 DUP7 ADD MSTORE DUP1 DUP9 DUP4 PUSH1 0x80 MLOAD ADD ADD PUSH2 0x2343 SWAP1 PUSH2 0xC16 JUMP JUMPDEST AND PUSH1 0x44 DUP7 ADD MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 DUP4 PUSH1 0x80 MLOAD ADD PUSH1 0x60 ADD PUSH2 0x2362 SWAP1 PUSH2 0x39F0 JUMP JUMPDEST AND PUSH1 0x64 DUP8 ADD MSTORE DUP3 PUSH1 0x80 MLOAD ADD PUSH1 0x80 ADD PUSH2 0x2379 SWAP1 PUSH2 0x39F0 JUMP JUMPDEST AND PUSH1 0x84 DUP7 ADD MSTORE DUP2 PUSH1 0x80 MLOAD ADD PUSH1 0xA0 ADD PUSH2 0x2390 SWAP1 PUSH2 0xC16 JUMP JUMPDEST AND PUSH1 0xA4 DUP6 ADD MSTORE PUSH1 0x80 MLOAD ADD PUSH1 0xC0 ADD CALLDATALOAD PUSH1 0xC4 DUP5 ADD MSTORE PUSH2 0x100 PUSH1 0xE4 DUP5 ADD MSTORE PUSH2 0x23BC SWAP2 PUSH2 0x104 DUP5 ADD SWAP2 DUP8 ADD PUSH2 0x386A JUMP JUMPDEST SUB DUP2 GAS PUSH1 0x0 SWAP5 DUP6 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0xB DUP2 SUB PUSH2 0x25A1 JUMPI POP POP POP PUSH2 0x23F6 PUSH1 0x40 DUP1 SWAP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP3 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 DUP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 SUB PUSH2 0x2571 JUMPI POP POP SELFBALANCE JUMPDEST DUP1 PUSH2 0x2430 JUMPI POP POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP4 MLOAD SWAP3 PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 SWAP4 PUSH1 0x0 DUP2 DUP7 DUP2 DUP8 DUP8 GAS CALL DUP1 ISZERO PUSH2 0x2566 JUMPI PUSH2 0x2557 JUMPI JUMPDEST POP ADDRESS SWAP1 DUP7 AND SUB PUSH2 0x24BF JUMPI JUMPDEST POP POP PUSH2 0x1974 JUMP JUMPDEST PUSH2 0x251E SWAP5 PUSH1 0x0 PUSH1 0x20 SWAP5 DUP7 MLOAD SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x2538 JUMPI JUMPDEST DUP1 DUP1 DUP1 DUP1 PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x2550 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3BE JUMPI PUSH2 0x3AF DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST POP CODESIZE PUSH2 0x252F JUMP JUMPDEST PUSH2 0x2560 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x24AD JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SELFBALANCE LT ISZERO PUSH2 0x2423 JUMPI PUSH1 0x4 DUP3 MLOAD PUSH32 0xBB9278B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0xC DUP2 SUB PUSH2 0x2731 JUMPI POP POP POP SWAP1 PUSH2 0x25B7 SWAP1 CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND PUSH1 0x40 DUP1 MLOAD SWAP4 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 ADDRESS DUP2 DUP8 ADD MSTORE PUSH1 0x24 SWAP2 PUSH1 0x20 DUP8 DUP5 DUP2 DUP9 GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP8 PUSH2 0x26FD JUMPI JUMPDEST POP PUSH1 0x80 MLOAD ADD DUP4 ADD CALLDATALOAD DUP7 LT PUSH2 0x26D6 JUMPI DUP6 PUSH2 0x2659 JUMPI JUMPDEST POP POP POP POP POP POP POP PUSH2 0xFE3 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 SWAP2 DUP7 SWAP2 DUP4 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x26C7 JUMPI JUMPDEST POP ADDRESS SWAP1 DUP4 AND SUB PUSH2 0x26B7 JUMPI JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x264D JUMP JUMPDEST PUSH2 0x26C0 SWAP2 PUSH2 0x4681 JUMP JUMPDEST CODESIZE DUP1 PUSH2 0x26AD JUMP JUMPDEST PUSH2 0x26D0 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x26A2 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xBB9278B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP7 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2729 JUMPI JUMPDEST DUP2 PUSH2 0x2718 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP6 DUP4 PUSH2 0x2639 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x270B JUMP JUMPDEST PUSH1 0xD DUP2 SUB PUSH2 0x298C JUMPI POP DUP3 PUSH1 0x80 MLOAD ADD ADD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 PUSH1 0x20 DUP3 PUSH1 0x80 MLOAD ADD DUP6 SUB SLT PUSH2 0xBCB JUMPI CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP5 SWAP2 PUSH1 0x80 MLOAD ADD ADD SWAP2 DUP3 ADD SLT ISZERO PUSH2 0xBCB JUMPI PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x2783 DUP3 PUSH2 0x39D8 JUMP JUMPDEST SWAP4 PUSH1 0x40 SWAP4 PUSH2 0x2793 DUP6 MLOAD SWAP7 DUP8 PUSH2 0x392D JUMP JUMPDEST DUP4 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP3 DUP6 DUP5 SWAP6 PUSH1 0x7 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xBCB JUMPI DUP6 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x292A JUMPI POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0x1 SLOAD AND DUP5 MLOAD SWAP1 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x28BE JUMPI POP POP POP DUP2 PUSH32 0x0 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP4 MLOAD PUSH32 0xD58B1DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP5 MLOAD PUSH1 0x24 DUP7 ADD DUP2 SWAP1 MSTORE DUP6 SWAP3 PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP2 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x287A JUMPI POP POP POP POP SWAP2 DUP2 PUSH1 0x0 DUP2 DUP2 SWAP6 SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST SWAP2 SWAP4 DUP4 SWAP6 POP PUSH1 0x80 PUSH1 0x20 SWAP2 DUP5 PUSH1 0x60 PUSH1 0x1 SWAP6 SWAP8 MLOAD DUP3 DUP2 MLOAD AND DUP5 MSTORE DUP3 DUP7 DUP3 ADD MLOAD AND DUP7 DUP6 ADD MSTORE DUP3 DUP14 DUP3 ADD MLOAD AND DUP14 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 SWAP2 DUP8 SWAP5 SWAP4 SWAP3 PUSH2 0x2852 JUMP JUMPDEST DUP2 DUP6 PUSH2 0x28CA DUP4 DUP11 PUSH2 0x3DA3 JUMP JUMPDEST MLOAD MLOAD AND SUB PUSH2 0x2901 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1E0E JUMPI PUSH1 0x1 ADD PUSH2 0x27DB JUMP JUMPDEST PUSH1 0x4 DUP7 MLOAD PUSH32 0xE700287700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x80 PUSH1 0x20 DUP6 DUP5 SUB ADD SLT PUSH2 0xBCB JUMPI PUSH1 0x20 PUSH1 0x80 SWAP2 DUP8 MLOAD PUSH2 0x2947 DUP2 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x2950 DUP8 PUSH2 0xC16 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x295D DUP4 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0x296C DUP10 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST DUP10 DUP3 ADD MSTORE PUSH2 0x297C PUSH1 0x60 DUP9 ADD PUSH2 0xC16 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x27AF JUMP JUMPDEST SWAP3 SWAP5 POP POP POP PUSH1 0xE DUP2 SUB PUSH2 0x2A8E JUMPI POP PUSH1 0x40 SWAP2 DUP3 MLOAD SWAP1 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x4 SWAP9 CALLDATALOAD AND DUP9 DUP4 ADD MSTORE DUP9 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP3 PUSH2 0x2A59 JUMPI JUMPDEST POP PUSH1 0x80 MLOAD ADD PUSH1 0x60 ADD CALLDATALOAD GT DUP1 ISZERO SWAP3 SWAP1 PUSH2 0x2A1B JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0xA328167200000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x2A51 DUP2 PUSH2 0x38F5 JUMP JUMPDEST SWAP1 CODESIZE DUP1 PUSH2 0x18E2 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2A86 JUMPI JUMPDEST DUP2 PUSH2 0x2A74 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP1 PUSH1 0x60 PUSH2 0x2A02 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD76A1E9E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x18 SWAP12 SWAP6 SWAP4 SWAP9 SWAP8 SWAP10 SWAP7 SWAP3 SWAP5 SWAP12 DUP1 DUP4 LT PUSH1 0x0 EQ PUSH2 0x304E JUMPI POP DUP2 SUB PUSH2 0x2B35 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x2AF3 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP1 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x11 DUP2 SUB PUSH2 0x2B8C JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x2B50 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x12 DUP2 SUB PUSH2 0x2BE3 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x2BA7 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP2 SWAP4 SWAP3 POP SWAP1 PUSH1 0x13 DUP2 SUB PUSH2 0x2D49 JUMPI POP POP SWAP1 SWAP2 POP CALLDATALOAD PUSH32 0x0 SWAP2 PUSH1 0x40 PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8264FE9800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x24 DUP8 DUP2 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x2C59 DUP2 PUSH2 0x3911 JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x60 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD DUP9 GAS CALL SWAP3 PUSH2 0x2C70 PUSH2 0x39A8 JUMP JUMPDEST SWAP5 DUP5 ISZERO PUSH2 0x2D0F JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2C9E SWAP3 AND SWAP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP3 MLOAD PUSH32 0x8B72A2EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST POP POP SWAP2 SWAP3 POP POP MLOAD PUSH32 0xAE9BDF0000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH2 0x2B2F DUP2 PUSH2 0x38F5 JUMP JUMPDEST PUSH1 0x15 DUP2 SUB PUSH2 0x2E5A JUMPI POP POP SWAP1 PUSH1 0x40 SWAP2 DUP3 DUP1 MLOAD SWAP2 PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 DUP4 PUSH1 0x24 DUP2 PUSH1 0x4 SWAP8 PUSH1 0x60 DUP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD DUP10 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 SWAP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2E4F JUMPI PUSH1 0x0 SWAP4 PUSH2 0x2E10 JUMPI JUMPDEST POP DUP2 SWAP1 CALLDATALOAD AND SWAP2 AND EQ SWAP2 DUP3 ISZERO PUSH2 0x2DDA JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0x7DBE7E8900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x2A51 DUP2 PUSH2 0x38F5 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP2 SWAP4 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2E47 JUMPI JUMPDEST DUP2 PUSH2 0x2E2C PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1D2 JUMPI MLOAD SWAP1 DUP3 DUP3 AND DUP3 SUB PUSH2 0x10F JUMPI POP SWAP2 DUP2 PUSH2 0x2DC4 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2E1F JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x16 DUP2 SUB PUSH2 0x2F81 JUMPI POP POP PUSH1 0x40 SWAP2 DUP3 MLOAD SWAP1 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 DUP3 DUP1 PUSH2 0x2ECC PUSH1 0x4 SWAP7 PUSH1 0x60 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 CALLDATALOAD DUP9 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP7 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1DC3 JUMPI PUSH1 0x0 SWAP3 PUSH2 0x2F4C JUMPI JUMPDEST POP PUSH1 0x80 SWAP1 DUP2 MLOAD ADD ADD CALLDATALOAD GT SWAP2 DUP3 ISZERO SWAP3 PUSH2 0x2F16 JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST MLOAD PUSH32 0x483A692900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x2A51 DUP2 PUSH2 0x38F5 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2F79 JUMPI JUMPDEST DUP2 PUSH2 0x2F67 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP1 PUSH1 0x80 PUSH2 0x2EFD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2F5A JUMP JUMPDEST SWAP1 SWAP3 SWAP1 PUSH1 0x17 EQ PUSH2 0x2F92 JUMPI POP POP PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2FBA DUP4 DUP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP4 CALLDATALOAD AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI DUP3 MLOAD PUSH32 0x42842E0E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x80 MLOAD ADDRESS PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 ADD PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x44 DUP3 ADD MSTORE SWAP2 PUSH1 0x0 SWAP1 DUP4 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x303F JUMPI JUMPDEST DUP1 PUSH2 0x18E2 JUMP JUMPDEST PUSH2 0x3048 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x3039 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 DUP3 EQ ISZERO SWAP1 POP PUSH2 0x3089 JUMPI POP POP POP PUSH2 0x2B2F SWAP3 POP PUSH32 0x0 SWAP2 PUSH2 0x3A4A JUMP JUMPDEST PUSH1 0x19 DUP2 SUB PUSH2 0x30E0 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x30A4 DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x1A DUP2 SUB PUSH2 0x3137 JUMPI POP POP POP PUSH1 0x0 SWAP3 POP SWAP1 PUSH2 0x30FB DUP4 SWAP3 DUP3 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x1B DUP2 SUB PUSH2 0x325E JUMPI POP POP POP PUSH1 0x0 PUSH2 0x314F DUP2 SWAP3 DUP5 PUSH2 0x3DE5 JUMP JUMPDEST SWAP4 SWAP1 PUSH1 0x40 SWAP5 DUP2 DUP7 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL SWAP2 DUP3 SWAP2 PUSH2 0x3192 PUSH2 0x39A8 JUMP JUMPDEST SWAP3 PUSH2 0x31A0 JUMPI JUMPDEST POP POP SWAP1 PUSH2 0xFE3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x80 DUP4 DUP2 MLOAD ADD ADD CALLDATALOAD AND PUSH2 0x31CF PUSH1 0x60 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP1 DUP3 MLOAD SWAP1 PUSH2 0x31DC DUP3 PUSH2 0x38D9 JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE DUP1 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH2 0x3238 SWAP5 PUSH1 0x0 DUP1 SWAP5 DUP7 MLOAD SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0xA0 PUSH1 0xC0 DUP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP3 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 ADDRESS PUSH1 0x4 DUP8 ADD PUSH2 0x3B42 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x324F JUMPI JUMPDEST DUP1 PUSH2 0x3198 JUMP JUMPDEST PUSH2 0x3258 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST CODESIZE PUSH2 0x3249 JUMP JUMPDEST SWAP2 SWAP5 SWAP1 SWAP2 PUSH1 0x1C DUP2 SUB PUSH2 0x3299 JUMPI POP POP POP PUSH2 0x2B2F SWAP3 POP PUSH32 0x0 SWAP2 PUSH2 0x3A4A JUMP JUMPDEST SWAP2 SWAP4 SWAP3 SWAP1 SWAP2 PUSH1 0x1D DUP2 SUB PUSH2 0x3422 JUMPI POP POP PUSH1 0x60 DUP2 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 PUSH1 0x40 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x32DA DUP5 DUP5 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP5 CALLDATALOAD AND DUP4 MLOAD SWAP5 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 SWAP4 PUSH1 0x20 DUP8 DUP1 PUSH2 0x3339 DUP8 ADDRESS DUP11 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP7 GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x2566 JUMPI PUSH1 0x0 SWAP8 PUSH2 0x33ED JUMPI JUMPDEST POP PUSH1 0x80 SWAP1 DUP2 MLOAD ADD ADD CALLDATALOAD DUP7 LT PUSH2 0x33C5 JUMPI DUP5 MLOAD PUSH2 0x3367 DUP2 PUSH2 0x38D9 JUMP JUMPDEST PUSH1 0x0 DUP2 MSTORE DUP3 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 SWAP5 PUSH2 0x33AF DUP7 SWAP3 DUP9 MLOAD SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD PUSH2 0x3B42 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1B1C JUMPI POP PUSH2 0x1796 JUMPI POP PUSH2 0xFE3 JUMP JUMPDEST DUP4 DUP6 MLOAD PUSH32 0x675CAE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP7 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x341A JUMPI JUMPDEST DUP2 PUSH2 0x3408 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP6 PUSH1 0x80 PUSH2 0x334D JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x33FB JUMP JUMPDEST SWAP3 SWAP5 POP SWAP3 POP POP PUSH1 0x1E DUP2 SUB PUSH2 0x2A8E JUMPI POP DUP2 PUSH2 0x3440 PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP4 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP5 SWAP10 SWAP9 SWAP11 SWAP3 POP PUSH1 0x20 DUP2 SWAP14 SWAP8 SWAP3 SWAP7 SWAP14 SWAP9 SWAP5 SWAP9 EQ PUSH1 0x0 EQ PUSH2 0x34E5 JUMPI POP POP POP POP POP POP DUP1 PUSH2 0x34A9 PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH2 0x3DE5 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP5 DUP2 MSTORE SUB SWAP2 CALLDATALOAD PUSH32 0x0 GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0x21 SWAP1 DUP1 DUP3 SUB PUSH2 0x365C JUMPI POP POP POP POP SWAP1 SWAP2 PUSH2 0x350A PUSH2 0x3502 DUP7 DUP7 PUSH2 0x3DC4 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 PUSH2 0x3DE5 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x354C PUSH1 0x40 SWAP8 DUP9 MLOAD SWAP8 PUSH1 0x20 DUP10 ADD SWAP10 PUSH32 0x24856BC300000000000000000000000000000000000000000000000000000000 DUP12 MSTORE PUSH1 0x24 DUP11 ADD MSTORE PUSH1 0x64 DUP10 ADD SWAP2 PUSH2 0x386A JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP8 DUP3 SUB ADD PUSH1 0x44 DUP9 ADD MSTORE DUP2 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 DUP4 ADD SWAP6 SHL DUP3 ADD ADD SWAP6 DUP6 PUSH1 0x0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x35DE JUMPI POP POP POP POP POP POP POP POP SWAP2 DUP2 PUSH2 0x35D0 PUSH1 0x0 SWAP5 SWAP4 DUP6 SWAP5 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x392D JUMP JUMPDEST MLOAD SWAP1 DUP3 ADDRESS GAS CALL PUSH2 0x2B2F PUSH2 0x39A8 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP6 DUP3 SUB ADD DUP9 MSTORE DUP9 CALLDATALOAD DUP3 DUP5 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0xBCB JUMPI DUP4 ADD SWAP1 PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBCB JUMPI DUP1 CALLDATASIZE SUB DUP4 SGT PUSH2 0xBCB JUMPI PUSH2 0x364C PUSH1 0x20 SWAP3 DUP4 SWAP3 DUP12 SWAP6 PUSH2 0x386A JUMP JUMPDEST SWAP11 ADD SWAP9 ADD SWAP7 SWAP6 SWAP5 SWAP4 ADD SWAP2 SWAP1 PUSH2 0x358A JUMP JUMPDEST SWAP3 SWAP8 POP SWAP4 POP SWAP4 POP PUSH1 0x22 DUP2 SWAP6 SWAP3 SWAP6 EQ PUSH1 0x0 EQ PUSH2 0x2A8E JUMPI POP CALLDATALOAD SWAP1 PUSH1 0x40 DUP1 SWAP4 PUSH1 0x80 MLOAD ADD ADD CALLDATALOAD SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x3814 JUMPI POP POP DUP1 DUP5 SWAP2 ISZERO PUSH1 0x0 EQ PUSH2 0x37BF JUMPI POP POP PUSH32 0x0 SWAP2 JUMPDEST PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP3 PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 SWAP6 AND DUP6 DUP6 ADD MSTORE PUSH1 0x20 PUSH1 0x24 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 ADD MSTORE PUSH1 0x44 DUP1 SWAP7 DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT DUP9 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x37B2 JUMPI JUMPDEST POP ISZERO PUSH2 0x3757 JUMPI POP POP POP POP PUSH2 0xFE3 JUMP JUMPDEST SWAP2 PUSH1 0xE PUSH32 0x415050524F56455F4641494C4544000000000000000000000000000000000000 SWAP3 PUSH1 0x20 PUSH1 0x64 SWAP7 SWAP6 MLOAD SWAP6 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE DUP7 ADD MSTORE DUP5 ADD MSTORE DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x3748 JUMP JUMPDEST SUB PUSH2 0x37EB JUMPI PUSH32 0x0 SWAP2 PUSH2 0x36BD JUMP JUMPDEST PUSH1 0x4 DUP3 MLOAD PUSH32 0x5461585F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP3 POP PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xFF633A3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x1F DUP3 PUSH1 0x20 SWAP5 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP4 DUP2 DUP7 MSTORE DUP7 DUP7 ADD CALLDATACOPY PUSH1 0x0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10EF JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x39D3 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x39B9 DUP3 PUSH2 0x396E JUMP JUMPDEST SWAP2 PUSH2 0x39C7 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x392D JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10EF JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xBCB JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x3A1A DUP3 PUSH2 0x396E JUMP JUMPDEST SWAP3 PUSH2 0x3A28 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x392D JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xBCB JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 PUSH2 0x3A57 SWAP1 DUP4 PUSH2 0x3DE5 JUMP JUMPDEST SWAP1 SWAP4 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 CALLDATACOPY DUP3 ADD SWAP1 PUSH1 0x0 SWAP6 DUP7 SWAP4 DUP4 DUP6 DUP1 SWAP6 MSTORE SUB SWAP2 DUP7 CALLDATALOAD SWAP1 GAS CALL SWAP3 PUSH2 0x3A7F PUSH2 0x39A8 JUMP JUMPDEST SWAP3 DUP5 PUSH2 0x3A89 JUMPI POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND PUSH2 0x3AB1 PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x3B87 JUMP JUMPDEST SWAP2 DUP2 EXTCODESIZE ISZERO PUSH2 0x436 JUMPI PUSH1 0x40 MLOAD PUSH32 0x42842E0E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 SWAP1 DUP2 SWAP1 DUP4 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3B36 JUMPI POP PUSH2 0x3B2B JUMPI POP JUMP JUMPDEST PUSH2 0x3B34 SWAP1 PUSH2 0x38A9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP3 PUSH2 0x3B84 SWAP6 SWAP5 SWAP2 PUSH1 0xA0 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP1 DUP3 AND PUSH1 0x1 DUP2 SUB PUSH2 0x3BB1 JUMPI POP POP PUSH1 0x1 SLOAD AND SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x2 SUB PUSH2 0x3B84 JUMPI POP ADDRESS SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xBCB JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0xBCB JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x3C02 JUMPI POP PUSH2 0x3B34 SWAP2 SWAP3 PUSH2 0x4681 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x3C35 JUMPI JUMPDEST SWAP3 PUSH2 0x3B34 SWAP3 SWAP4 PUSH2 0x46EF JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD SWAP3 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x20 DUP5 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 SWAP5 PUSH2 0x3C84 JUMPI JUMPDEST POP SWAP3 SWAP1 PUSH2 0x3C2A JUMP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x3CAF JUMPI JUMPDEST DUP2 PUSH2 0x3C9C PUSH1 0x20 SWAP4 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x57A JUMPI MLOAD SWAP4 POP PUSH2 0x3B34 PUSH2 0x3C7C JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3C8F JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1E0E JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3CD4 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH32 0x0 AND SWAP4 DUP5 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 SWAP5 DUP5 DUP7 SWAP3 DUP2 PUSH1 0x84 SWAP7 DUP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP12 MSTORE AND PUSH1 0x4 DUP11 ADD MSTORE AND PUSH1 0x24 DUP9 ADD MSTORE AND PUSH1 0x44 DUP7 ADD MSTORE AND PUSH1 0x64 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x10E3 JUMPI PUSH2 0x3B2B JUMPI POP JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1E0E JUMPI JUMP JUMPDEST SWAP2 DUP3 CALLDATALOAD DUP4 ADD SWAP2 PUSH2 0x3DDE PUSH1 0x20 DUP5 CALLDATALOAD SWAP6 DUP2 DUP7 ADD SWAP6 SUB ADD DUP6 PUSH2 0x3DB7 JUMP JUMPDEST GT PUSH2 0x11CF JUMPI JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP4 ADD SWAP2 PUSH2 0x3DDE PUSH1 0x20 DUP5 CALLDATALOAD SWAP6 DUP2 DUP7 ADD SWAP6 SUB ADD DUP6 PUSH2 0x3DB7 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 ADD CALLDATALOAD DUP4 ADD SWAP2 PUSH2 0x3DDE PUSH1 0x20 DUP5 CALLDATALOAD SWAP6 DUP2 DUP7 ADD SWAP6 SUB ADD DUP6 PUSH2 0x3DB7 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 EQ PUSH2 0x1E0E JUMPI PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND ADDRESS SUB PUSH2 0x3E78 JUMPI POP POP PUSH2 0x3B34 SWAP3 PUSH2 0x3BD8 JUMP JUMPDEST DUP1 DUP5 SWAP6 SWAP5 GT PUSH2 0x3E8C JUMPI PUSH2 0x3B34 SWAP5 AND SWAP3 PUSH2 0x3D03 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC4BD89A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP4 AND DUP5 DUP4 AND GT PUSH2 0x4021 JUMPI JUMPDEST PUSH3 0xFFFFFF SWAP1 DUP5 PUSH1 0x40 MLOAD SWAP5 DUP2 PUSH1 0x20 DUP8 ADD SWAP6 AND DUP6 MSTORE AND PUSH1 0x40 DUP6 ADD MSTORE AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x60 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x10EF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 PUSH2 0x401A SWAP2 DUP4 PUSH1 0x40 MSTORE DUP5 MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0x3FED PUSH1 0xA0 DUP3 ADD SWAP6 PUSH32 0x0 SWAP1 PUSH32 0x0 DUP9 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x55 SWAP5 SWAP3 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x60 SHL AND PUSH1 0x1 DUP5 ADD MSTORE PUSH1 0x15 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x392D JUMP JUMPDEST MLOAD SWAP1 KECCAK256 AND SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH2 0x3ED8 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0xBCB JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1E0E JUMPI JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH2 0x401A SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 SWAP3 PUSH1 0x60 SHL AND DUP5 MSTORE PUSH1 0x60 SHL AND PUSH1 0x34 DUP3 ADD MSTORE PUSH1 0x28 DUP2 MSTORE PUSH2 0x40CA DUP2 PUSH2 0x3911 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x413C PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 DUP8 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x55 SWAP5 SWAP3 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x60 SHL AND PUSH1 0x1 DUP5 ADD MSTORE PUSH1 0x15 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x392D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x418C JUMPI SWAP2 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST MLOAD SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBCB JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0xBCB JUMPI PUSH2 0x41BF DUP2 PUSH2 0x4190 JUMP JUMPDEST SWAP2 PUSH1 0x40 PUSH2 0x41CE PUSH1 0x20 DUP5 ADD PUSH2 0x4190 JUMP JUMPDEST SWAP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0xBCB JUMPI SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x2 DUP3 LT PUSH2 0x4657 JUMPI DUP2 ISZERO PUSH2 0x1E57 JUMPI PUSH2 0x41F9 DUP5 PUSH2 0x4039 JUMP JUMPDEST SWAP2 PUSH1 0x1 SWAP5 DUP2 DUP7 LT ISZERO PUSH2 0x1E57 JUMPI SWAP2 PUSH2 0x4217 PUSH1 0x20 SWAP5 PUSH2 0x1C1A DUP7 DUP7 ADD PUSH2 0x4039 JUMP JUMPDEST POP SWAP3 PUSH1 0x0 SWAP4 JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 ADD DUP6 LT PUSH2 0x4250 JUMPI POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x425E PUSH2 0x1CC4 DUP7 DUP7 DUP6 PUSH2 0x4029 JUMP JUMPDEST SWAP3 PUSH2 0x426F PUSH2 0x1CC4 DUP11 DUP9 ADD DUP8 DUP7 PUSH2 0x4029 JUMP JUMPDEST SWAP4 PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP6 PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP5 PUSH1 0x60 SWAP3 PUSH1 0x4 SWAP4 DUP1 DUP11 DUP7 DUP2 DUP12 GAS STATICCALL SWAP10 DUP11 ISZERO PUSH2 0x2566 JUMPI SWAP1 DUP14 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP13 PUSH2 0x4631 JUMPI JUMPDEST POP POP DUP8 DUP1 SWAP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP13 AND SWAP3 AND SWAP3 AND DUP3 EQ SWAP10 DUP11 PUSH1 0x0 EQ PUSH2 0x462B JUMPI JUMPDEST DUP7 MLOAD SWAP6 DUP7 DUP1 SWAP5 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP12 DUP9 DUP4 ADD MSTORE PUSH1 0x24 SWAP9 DUP10 SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4620 JUMPI DUP15 PUSH1 0x0 SWAP5 PUSH2 0x45EF JUMPI JUMPDEST POP POP DUP1 DUP4 SUB SWAP2 DUP2 ISZERO SWAP4 DUP5 DUP1 ISZERO PUSH2 0x45E7 JUMPI JUMPDEST PUSH2 0x45BF JUMPI DUP3 PUSH2 0x3E5 DUP1 DUP7 MUL SWAP6 DUP7 DIV EQ SWAP2 EQ OR ISZERO PUSH2 0x4592 JUMPI PUSH2 0x4377 SWAP1 DUP4 PUSH2 0x3CB7 JUMP JUMPDEST SWAP3 PUSH2 0x3E8 DUP1 DUP4 MUL SWAP3 DUP4 DIV EQ OR ISZERO PUSH2 0x4565 JUMPI PUSH2 0x439C SWAP3 SWAP2 PUSH2 0x4396 SWAP2 PUSH2 0x3DB7 JUMP JUMPDEST SWAP1 PUSH2 0x3CCA JUMP JUMPDEST SWAP8 ISZERO PUSH2 0x455D JUMPI PUSH1 0x0 SWAP8 SWAP1 JUMPDEST DUP10 DUP12 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP3 ADD DUP2 LT ISZERO PUSH2 0x4551 JUMPI SWAP2 PUSH2 0x1C1A PUSH2 0x1CC4 PUSH2 0x43ED SWAP4 PUSH1 0x2 PUSH2 0x4437 SWAP13 SWAP7 ADD SWAP1 DUP14 PUSH2 0x4029 JUMP JUMPDEST DUP2 SWAP9 SWAP2 PUSH32 0x0 PUSH32 0x0 PUSH2 0x4067 JUMP JUMPDEST SWAP7 JUMPDEST SWAP9 DUP6 MLOAD SWAP2 DUP14 DUP4 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP2 LT DUP7 DUP3 GT OR PUSH2 0x4524 JUMPI DUP9 MSTORE PUSH1 0x0 DUP5 MSTORE DUP2 EXTCODESIZE ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 DUP11 SWAP4 PUSH2 0x44B7 DUP3 SWAP7 DUP12 MLOAD SWAP13 DUP14 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE DUP14 DUP8 ADD MSTORE DUP14 DUP7 ADD MSTORE AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP1 PUSH2 0xC68 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DC3 JUMPI SWAP1 DUP14 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x44DC JUMPI JUMPDEST POP POP POP POP POP SWAP5 ADD SWAP4 SWAP2 PUSH2 0x421D JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP1 SWAP6 SWAP7 POP GT PUSH2 0x44F8 JUMPI POP POP MSTORE DUP8 SWAP1 CODESIZE DUP1 DUP1 DUP1 DUP1 PUSH2 0x44CE JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST DUP8 PUSH1 0x41 DUP9 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST POP POP POP DUP12 SWAP6 PUSH1 0x0 PUSH2 0x4439 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST DUP6 PUSH1 0x11 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST DUP7 PUSH1 0x11 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST DUP7 DUP10 MLOAD PUSH32 0x7B9C891600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP2 ISZERO PUSH2 0x4356 JUMP JUMPDEST DUP2 DUP2 SWAP6 SWAP3 SWAP4 SWAP6 RETURNDATASIZE DUP4 GT PUSH2 0x4619 JUMPI JUMPDEST PUSH2 0x4607 DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x10F JUMPI POP MLOAD SWAP2 CODESIZE DUP15 PUSH2 0x4345 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x45FD JUMP JUMPDEST DUP8 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x4300 JUMP JUMPDEST DUP10 SWAP13 POP DUP10 SWAP3 POP SWAP1 DUP2 PUSH2 0x464E SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x221E JUMPI PUSH2 0x220D DUP2 DUP4 PUSH2 0x392D JUMP JUMPDEST POP SWAP12 SWAP1 SWAP2 PUSH2 0x42D7 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x394060AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 SWAP4 DUP2 SWAP4 GAS CALL ISZERO PUSH2 0x4691 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4554485F5452414E534645525F4641494C454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 PUSH1 0x44 PUSH1 0x20 SWAP3 PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP3 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x47BD JUMPI JUMPDEST POP ISZERO PUSH2 0x475F JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x4757 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"410:1670:14:-:0;;;;;;;;;;;;;-1:-1:-1;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;410:1670:14;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3116:4:25;;;;;;;;;;639:51:18;:30;;;:51;;;;:::i;:::-;;704:8;700:36;;410:1670:14;;;765:41:18;;800:4;765:41;;;2099:4:25;410:1670:14;765:16:18;410:1670:14;;765:41:18;410:1670:14;1449:4:25;410:1670:14;;765:41:18;;;;;;;;;;;410:1670:14;-1:-1:-1;410:1670:14;;;816:62:18;;410:1670:14;842:26:18;410:1670:14;816:62:18;;;2099:4:25;;;;;;410:1670:14;;;;;;;;;;;;;;2099:4:25;;816:62:18;;;;;;;;;;893:20;816:62;;;410:1670:14;;;;;;893:20:18;410:1670:14;;816:62:18;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;410:1670:14;;2099:4:25;410:1670:14;;2099:4:25;;;;765:41:18;;;;;;;;;;;;;;;;;:::i;:::-;;;2099:4:25;;;;;;816:62:18;765:41;;2099:4:25;410:1670:14;;;765:41:18;;;;;;410:1670:14;;2099:4:25;410:1670:14;;2099:4:25;;;;700:36:18;410:1670:14;;;721:15:18;;;;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;564:15;:26;560:66;;334:10:17;356:4;334:27;356:4;;410:1670:14;;;;;;;;;381:27:17;377:56;;231:10;;;;;;;482:1;231:10;;334;;;231;;;;;482:1;:::i;:::-;231:10;;;;;;410:1670:14;;377:56:17;410:1670:14;417:16:17;;;;330:236;554:1;;;;;;;;;:::i;:::-;410:1670:14;;560:66;410:1670;;;599:27;;;;410:1670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;356:4:17;;;334:10;356:4;334:27;356:4;;381:8;410:1670:14;;;;;;;;381:27:17;377:56;;231:10;;;;;;;482:1;231:10;;334;;;231;;;;;482:1;:::i;410:1670:14:-;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1992:17:31;;;;;;;;;:38;;;410:1670:14;1988:66:31;;2147:34;;;410:1670:14;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2998:28:29;;;:::i;:::-;1181:39;;;410:1670:14;1181:39:29;;1177:70;;1257:239;;;;410:1670:14;1257:239:29;;;;;;;;;;410:1670:14;1257:239:29;;2437:42:31;1257:239:29;;;;;;;;2437:42:31;;:::i;:::-;2483:10;;410:1670:14;;2437:56:31;2433:86;;2585:108;;;2605:18;;;;2585:108;2704:778;;;2483:10;;;;;;;;2826:11;2483:10;;;2826:11;;:::i;2704:778::-;569:53:30;;;;;;;410:1670:14;569:53:30;;;;;;;2921:551:31;410:1670:14;;;;1257:239:29;410:1670:14;;;;;1004:12:8;1008:8;1004:12;;410:1670:14;;;3102:23:31;;;:::i;:::-;1181:39:29;410:1670:14;1181:39:29;;1177:70;;1257:239;7138:23:31;1257:239:29;;6941:42:31;1257:239:29;;;;1640:10:31;1257:239:29;;;;;;;;;;410:1670:14;1257:239:29;6868:18:31;;;;1257:239:29;;;;6941:42:31;;:::i;:::-;410:1670:14;;7071:52:31;;;;1640:10;;7071:52;;410:1670:14;;7138:23:31;;;410:1670:14;7138:23:31;;1640:10;410:1670:14;1640:10:31;;;;:::i;:::-;;;;;2099:4:25;7138:23:31;;;;;;;;:::i;:::-;410:1670:14;;6928:243:31;;;;;;;410:1670:14;6928:243:31;;2483:10;6928:243;;;2099:4:25;410:1670:14;1640:10:31;;410:1670:14;;1640:10:31;;410:1670:14;;1640:10:31;;;2099:4:25;1640:10:31;;;;;;;;;;:::i;:::-;6928:243;;;;;;;;;;2921:551;;410:1670:14;;6928:243:31;;;;;;;;;;;;:::i;:::-;;;1640:10;;;;410:1670:14;;6928:243:31;;;;;;410:1670:14;;;2099:4:25;;;;;;;;7071:52:31;1640:10;1821:49;7071:52;;;1177:70:29;410:1670:14;;;1229:18:29;;;;410:1670:14;;;;2921:551:31;410:1670:14;;;;;;;;;;;;;3201:31:31;;3197:64;;2483:10;3445:11;2483:10;;;;3445:11;;:::i;3197:64::-;410:1670:14;;;3241:20:31;;;;2585:108;2651:18;;;;;2585:108;;2433:86;410:1670:14;;;2502:17:31;;;;1177:70:29;410:1670:14;;;1229:18:29;;;;410:1670:14;;;;1988:66:31;410:1670:14;;;2039:15:31;;;;1992:38;2013:17;;;;;1992:38;;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;1287:49:15;;1302:34;1287:49;;:101;;;;;410:1670:14;1287:157:15;;;;410:1670:14;;;;;;;1287:157:15;1419:25;1404:40;;;1287:157;;;:101;1355:33;1340:48;;;-1:-1:-1;1287:101:15;;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;410:1670:14;;;;;;;;;;;-1:-1:-1;410:1670:14;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;997:846;;;;;;;1212:28;;;1208:57;;1372:24;;-1:-1:-1;1367:470:14;1398:26;;;;;;997:846;;;;:::o;1372:24::-;410:1670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;313:4:25;;410:1670:14;;;;;1458:22;410:1670;313:4:25;;1993::16;2012:37;410:1670:14;2012:37:16;;2008:19933;410:1670:14;;;-1:-1:-1;1709:4:25;2069:37:16;;;1709:4:25;;;-1:-1:-1;1031:4:25;2172:36:16;;;1031:4:25;;;-1:-1:-1;2236:36:16;;;2998:28:29;;;;;;;:::i;:::-;3098:38:16;;;2573:419;410:1670:14;;;;2573:419:16;;3098:38;2573:419;;;3179:14;410:1670:14;1993:4:16;410:1670:14;;3098:38:16;;2573:419;3179:14;:::i;:::-;410:1670:14;2573:419:16;410:1670:14;;;;2573:419:16;;3225:5;;;4172:38:31;476:66:26;4172:38:31;;4168:174;;3098:38:16;-1:-1:-1;4352:17:31;;;-1:-1:-1;4379:922:31;476:66:26;1004:12:8;;410:1670:14;;;;569:53:30;;410:1670:14;;4696:4:31;4669:44;;410:1670:14;;;;;1257:239:29;;410:1670:14;1257:239:29;;;410:1670:14;1257:239:29;;;;;;;410:1670:14;1257:239:29;410:1670:14;6941:42:31;410:1670:14;1257:239:29;;;;;;6941:42:31;;;:::i;:::-;410:1670:14;;6847:18:31;;;410:1670:14;;;7071:52:31;1640:10;7071:52;;410:1670:14;2573:419:16;410:1670:14;7138:23:31;2573:419:16;410:1670:14;7138:23:31;;1640:10;;410:1670:14;1640:10:31;;410:1670:14;;;;3116:4:25;-1:-1:-1;3116:4:25;;;;410:1670:14;2573:419:16;1640:10:31;;2099:4:25;2573:419:16;7138:23:31;;3116:4:25;;;;;;;410:1670:14;3116:4:25;;;;;2573:419:16;3116:4:25;;;;;;;410:1670:14;6928:243:31;;410:1670:14;6928:243:31;;;2099:4:25;6847:18:31;;;1640:10;;;410:1670:14;1640:10:31;;;410:1670:14;;1640:10:31;;;2099:4:25;2573:419:16;1640:10:31;;;;;-1:-1:-1;6928:243:31;1640:10;;;;;;;:::i;:::-;6928:243;;;;;;;;;;-1:-1:-1;;;6928:243:31;;;7071:52;4980:40;;4978:43;4980:40;6847:18;4980:40;410:1670:14;;;4980:40:31;4978:43;:::i;:::-;569:53:30;410:1670:14;569:53:30;;410:1670:14;;5148:4:31;410:1670:14;;;;;;;;1257:239:29;;410:1670:14;;4379:922:31;;;;5092:199;5233:20;;;;410:1670:14;5233:20:31;;;;;;;;5271:5;410:1670:14;;;2573:419:16;;-1:-1:-1;5311:62:31;;2232:5117:16;1616:8:14;:36;;;2008:19933:16;1612:144:14;;410:1670;1993:4:16;410:1670:14;1372:24;;;;;;;1612:144;410:1670;;;;;;1679:62;;;;;;;;;410:1670;;;;;;;;;;:::i;:::-;1679:62;;;1616:36;410:1670;;;;;1458:22;1936:36;:41;1616:36;;5311:62:31;6928:243;2573:419:16;410:1670:14;5352:21:31;;;;4980:40;;;4978:43;:::i;6928:243::-;;;;;;2573:419:16;6928:243:31;;2573:419:16;6928:243:31;;;;;;2573:419:16;6928:243:31;;;:::i;:::-;;;1640:10;;;;-1:-1:-1;1640:10:31;;;;;;;;;4978:43;6928:243;;;;;;-1:-1:-1;6928:243:31;;;2573:419:16;410:1670:14;2099:4:25;-1:-1:-1;2099:4:25;;;;;3116;;-1:-1:-1;3116:4:25;;6928:243:31;3116:4:25;1640:10:31;-1:-1:-1;3116:4:25;7071:52:31;;1821:49;7071:52;;;4669:44;;;;;4168:174;1247:2:26;565:35:29;;;;561:66;;410:1670:14;1449:4:25;410:1670:14;2573:419:16;410:1670:14;4292:39:31;;;;410:1670:14;4292:39:31;;4325:4;4292:39;;;2099:4:25;637:81:29;410:1670:14;637:81:29;4292:39:31;;;;;;;-1:-1:-1;4292:39:31;;;4168:174;4281:50;4168:174;;;;4292:39;;410:1670:14;4292:39:31;;410:1670:14;4292:39:31;;;;;;410:1670:14;4292:39:31;;;:::i;:::-;;;2099:4:25;;;;;;4292:39:31;;;;;;-1:-1:-1;4292:39:31;;561:66:29;609:18;2573:419:16;410:1670:14;609:18:29;;;;3098:38:16;3179:14;3131:4;3098:38;;;2232:5117;1993:4;3264:37;;;;;;;;;;;;;;3260:4089;1993:4;;;2998:28:29;;;;;;;;;:::i;:::-;4127:38:16;3602:419;410:1670:14;;;;3602:419:16;;4127:38;3602:419;;;4209:14;410:1670:14;1993:4:16;410:1670:14;;4127:38:16;3602:419;4209:14;:::i;:::-;410:1670:14;;;;;;3602:419:16;;-1:-1:-1;410:1670:14;1008:8:8;3602:419:16;410:1670:14;;;;3602:419:16;;1004:12:8;410:1670:14;;;6091:21:31;3602:419:16;410:1670:14;;;;3602:419:16;;6091:21:31;:::i;:::-;410:1670:14;1181:39:29;;1177:70;;1257:239;;;;;;;410:1670:14;1257:239:29;;;;;410:1670:14;1257:239:29;;;;;;;;6941:42:31;;;;;:::i;:::-;410:1670:14;;7071:52:31;6868:18;;;7071:52;1257:239:29;;410:1670:14;1257:239:29;;-1:-1:-1;1257:239:29;7138:23:31;1640:10;1257:239:29;3602:419:16;1257:239:29;;;1640:10:31;7071:52;;410:1670:14;1640:10:31;410:1670:14;;7138:23:31;3602:419:16;7138:23:31;;;410:1670:14;7138:23:31;;1640:10;410:1670:14;1640:10:31;;;;:::i;:::-;410:1670:14;;1640:10:31;;;2099:4:25;7138:23:31;;;;;;;;:::i;:::-;410:1670:14;;6928:243:31;;;;;;;410:1670:14;6928:243:31;;410:1670:14;6928:243:31;;;2099:4:25;6868:18:31;1640:10;;;410:1670:14;1640:10:31;;;410:1670:14;;1640:10:31;;;2099:4:25;3602:419:16;1640:10:31;;;;;;;;;:::i;:::-;6928:243;;;;;;;;;-1:-1:-1;;;6928:243:31;;;7071:52;-1:-1:-1;3602:419:16;;6868:18:31;1257:239:29;;;6204:13:31;;;;:::i;:::-;6183:60;;410:1670:14;;;3602:419:16;;6258:30:31;6254:63;;1321:17;-1:-1:-1;410:1670:14;3260:4089:16;2232:5117;;6254:63:31;6928:243;3602:419:16;410:1670:14;6297:20:31;;;;6183:60;6229:13;;;;:::i;:::-;6183:60;;;6928:243;;;;3602:419:16;6928:243:31;;3602:419:16;6928:243:31;;;;;;3602:419:16;6928:243:31;;;:::i;:::-;;;1640:10;;;;-1:-1:-1;1640:10:31;;410:1670:14;1640:10:31;;;;;;3602:419:16;6928:243:31;;;;;-1:-1:-1;6928:243:31;;7071:52;1821:49;7071:52;;;4127:38:16;4209:14;4160:4;4127:38;;;3260:4089;608:4:25;4294:41:16;;608:4:25;;410:1670:14;;;4908:6:16;410:1670:14;;;1993:4:16;410:1670:14;;4892:14:16;4572:258;410:1670:14;;;;;4572:258:16;;410:1670:14;;;;4572:258:16;;4892:14;:::i;:::-;4572:258;;4908:6;:::i;4290:3059::-;4948:40;;;658:4:25;4948:40:16;;658:4:25;;-1:-1:-1;;410:1670:14;;;;5099:59:16;;;;410:1670:14;772:4:25;;;;;;;;;410:1670:14;772:4:25;;;;410:1670:14;;;;772:4:25;;410:1670:14;772:4:25;;;;;;;410:1670:14;3116:4:25;410:1670:14;3116:4:25;;;;;410:1670:14;3116:4:25;;;;;772;3116;410:1670:14;772:4:25;;;410:1670:14;772:4:25;;;;;;410:1670:14;5099:59:16;;772:4:25;;;;;;;;410:1670:14;772:4:25;;;;;;;:::i;:::-;410:1670:14;3116:4:25;772;410:1670:14;3116:4:25;;;:::i;:::-;772;;;;410:1670:14;772:4:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;410:1670:14;772:4:25;;;410:1670:14;:::i;:::-;772:4:25;410:1670:14;772:4:25;;;;;410:1670:14;772:4:25;;;;;410:1670:14;772:4:25;;;410:1670:14;;;;772:4:25;;;410:1670:14;772:4:25;;;;410:1670:14;772:4:25;410:1670:14;2998:28:29;410:1670:14;;;;772:4:25;;;:::i;:::-;;2998:28:29;:::i;:::-;410:1670:14;;;1993:4:16;410:1670:14;;5249:7:16;410:1670:14;5249:7:16;410:1670:14;5249:43:16;;;;410:1670:14;;;;;772:4:25;410:1670:14;5249:43:16;;;410:1670:14;5249:43:16;;;;;2099:4:25;410:1670:14;772:4:25;;;;;;;;;;410:1670:14;772:4:25;;;;410:1670:14;;;;;;;;;772:4:25;;;-1:-1:-1;772:4:25;;;;;;;;;;;;;;;;410:1670:14;-1:-1:-1;772:4:25;;410:1670:14;772:4:25;;;2099;772;;;;410:1670:14;772:4:25;;;;;;;;;;:::i;:::-;5249:43:16;:7;;410:1670:14;5249:7:16;410:1670:14;5249:43:16;;;;;;;;772:4:25;4944:2405:16;2232:5117;;5249:43;;;;:::i;:::-;;;;772:4:25;;;;;;;;;410:1670:14;772:4:25;1993::16;772::25;;;410:1670:14;772:4:25;;410:1670:14;2099:4:25;;410:1670:14;772:4:25;;;;410:1670:14;772:4:25;;;2099;410:1670:14;1449:4:25;772;;;;;;1449;772;;;1449;772;;1449;410:1670:14;772:4:25;;1449;772;3116;;772;;;;;;;;;;;;;;410:1670:14;772:4:25;;;;;;;410:1670:14;772:4:25;410:1670:14;772:4:25;410:1670:14;3116:4:25;;;:::i;:::-;410:1670:14;;;:::i;:::-;772:4:25;;1449;772;;;1449;:::i;:::-;772;;;;1449;772;;;1449;:::i;:::-;772;;;;1449;410:1670:14;772:4:25;;1449;:::i;:::-;410:1670:14;772:4:25;;;;;;;;;;;4944:2405:16;693:4:25;;-1:-1:-1;693:4:25;;-1:-1:-1;5325:25:16;;;693:4:25;;5591:261:16;;;;;410:1670:14;5899:14:16;410:1670:14;;;;;5591:261:16;;5899:14;:::i;:::-;410:1670:14;;;;;5591:261:16;;410:1670:14;;;;;5591:261:16;410:1670:14;3364:22:27;410:1670:14;;3412:21:27;;3451:23;;;3447:53;;3518:11;;;3514:51;;3360:439;;;2232:5117:16;;3514:51:27;3557:7;;;:::i;:::-;3514:51;;;;3447:53;410:1670:14;3483:17:27;;;;3360:439;410:1670:14;;;;;3606:37:27;410:1670:14;3606:37:27;;3637:4;3606:37;;;2099:4:25;410:1670:14;3606:37:27;1449:4:25;3606:37:27;;;;;;;;;-1:-1:-1;3606:37:27;;;3360:439;3661:23;;;3657:55;;3730:11;;;3726:62;;3360:439;;;;2232:5117:16;;3726:62:27;3780:7;;;:::i;:::-;3726:62;;;;;3657:55;410:1670:14;3693:19:27;;;;3606:37;;;410:1670:14;3606:37:27;;410:1670:14;3606:37:27;;;;;;410:1670:14;3606:37:27;;;:::i;:::-;;;2099:4:25;;;;;;3606:37:27;;;;;;;-1:-1:-1;3606:37:27;;;410:1670:14;;2099:4:25;-1:-1:-1;2099:4:25;;;;;5321:2028:16;5958:28;;410:1670:14;;;6541:5:16;410:1670:14;;6525:14:16;6223:257;410:1670:14;;;;;6223:257:16;;410:1670:14;;;;6223:257:16;;6525:14;:::i;:::-;6223:257;;6541:5;:::i;5954:1395::-;6580:31;;;772:4:25;6580:31:16;;772:4:25;;-1:-1:-1;410:1670:14;;;;6847:256:16;;;;;;7155:14;;6847:256;;;7155:14;:::i;:::-;2494:9:27;;;:33;;;;6576:773:16;2490:59:27;;6847:256:16;410:1670:14;;;2563:22:27;410:1670:14;;2619:21:27;;2743:6;2619:21;;2672:14;814:6;2619:21;;2672:14;:::i;:::-;814:6;2743;;:::i;2559:409::-;410:1670:14;;2799:37:27;410:1670:14;2799:37:27;;2830:4;2799:37;;;2099:4:25;410:1670:14;2799:37:27;1449:4:25;2799:37:27;;;;;;;;;;-1:-1:-1;2799:37:27;;;2559:409;2868:14;;2950:6;2868:14;;;814:6;2868:14;;:::i;:::-;814:6;2950;;:::i;2799:37::-;;410:1670:14;2799:37:27;;410:1670:14;2799:37:27;;;;;;410:1670:14;2799:37:27;;;:::i;:::-;;;2099:4:25;;;;-1:-1:-1;2099:4:25;2868:14:27;2799:37;;;;;-1:-1:-1;2799:37:27;;;410:1670:14;2099:4:25;-1:-1:-1;2099:4:25;;;;;2490:59:27;410:1670:14;;;2536:13:27;;;;2494:33;2507:20;814:6;2507:20;;2494:33;;6576:773:16;410:1670:14;3116:4:25;410:1670:14;;;7299:27:16;;;;;;410:1670:14;7299:27:16;2168:10176;7445:41;;;;;;;;;;;;;;;;7441:4885;1031:4:25;;;7787:419:16;;;;410:1670:14;2998:28:29;410:1670:14;;;;;7787:419:16;;2998:28:29;;;:::i;:::-;8323:38:16;;;7787:419;410:1670:14;;;;7787:419:16;;8323:38;7787:419;;;8409:14;410:1670:14;1993:4:16;410:1670:14;;8323:38:16;7787:419;8409:14;:::i;:::-;410:1670:14;;;;;3079:7:33;;;:::i;:::-;410:1670:14;1993:4:16;410:1670:14;;;;917:26:32;960:55;410:1670:14;3088:7:33;410:1670:14;;;3088:7:33;:::i;:::-;917:26:32;;:::i;:::-;3044:33:33;;3021:21;960:55:32;:::i;:::-;3123:34:33;;;3106:208;;8323:38:16;684:1:26;;;;;;;;;;;;3347:21:33;410:1670:14;3347:21:33;410:1670:14;3347:21:33;;;;;;:::i;:::-;;:::i;:::-;410:1670:14;;;;;;3403:29:33;;;;410:1670:14;;3403:29:33;;;;;;;2099:4:25;1449;3403:29:33;410:1670:14;3403:29:33;;;;;;;;;;;-1:-1:-1;3403:29:33;;;8323:38:16;3473:9:33;;410:1670:14;3473:9:33;;;;;;;;:::i;:::-;410:1670:14;;3514:29:33;;;;;;;;;;2099:4:25;3514:29:33;;;;;;;-1:-1:-1;3514:29:33;;;8323:38:16;410:1670:14;;;3514:45:33;410:1670:14;;;;7787:419:16;;3514:45:33;;:::i;:::-;3573:28;3569:67;;7441:4885:16;;2168:10176;;3569:67:33;410:1670:14;3610:26:33;;;;3514:29;;;410:1670:14;3514:29:33;;410:1670:14;3514:29:33;;;;;;410:1670:14;3514:29:33;;;:::i;:::-;;;2099:4:25;;;;-1:-1:-1;2099:4:25;;410:1670:14;3514:29:33;;;;;-1:-1:-1;3514:29:33;;;410:1670:14;;2099:4:25;-1:-1:-1;2099:4:25;;;;;3403:29:33;;;410:1670:14;3403:29:33;;410:1670:14;3403:29:33;;;;;;410:1670:14;3403:29:33;;;:::i;:::-;;;2099:4:25;;;;-1:-1:-1;2099:4:25;;410:1670:14;3403:29:33;;;;;-1:-1:-1;3403:29:33;;;410:1670:14;;2099:4:25;-1:-1:-1;2099:4:25;;;;;684:1:26;814:6:27;-1:-1:-1;814:6:27;;;;;-1:-1:-1;814:6:27;3106:208:33;3294:8;3267:7;;;;:::i;:::-;3294:8;:::i;:::-;3106:208;;;;;410:1670:14;;-1:-1:-1;410:1670:14;;;;;-1:-1:-1;410:1670:14;8323:38:16;8409:14;8356:4;8323:38;;;7441:4885;8494:42;;;;;1220:4:25;8494:42:16;;1220:4:25;;2998:28:29;;;;;;:::i;:::-;410:1670:14;;;;8837:419:16;;;;;;9460:14;410:1670:14;1993:4:16;410:1670:14;;9373:38:16;8837:419;9460:14;:::i;:::-;410:1670:14;;;;:::i;:::-;;3116:4:25;8837:419:16;410:1670:14;3116:4:25;;;:::i;:::-;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;4296:136:33;;;-1:-1:-1;410:1670:14;5751:1:32;410:1670:14;;5737:15:32;5733:41;;8837:419:16;410:1670:14;;;;8837:419:16;;410:1670:14;;;684:1:26;;;;;;;;5812:295:32;;5846:5;;;-1:-1:-1;;410:1670:14;;;;8837:419:16;;4446:26:33;;4442:64;;410:1670:14;;;;4614:9:33;4538:7;;4565:8;4538:7;;;;:::i;4565:8::-;4614:9;:::i;4442:64::-;3422:30:32;8837:419:16;410:1670:14;4481:25:33;;;;5853:3:32;684:1:26;;;;;;-1:-1:-1;684:1:26;;;;;410:1670:14;6010:11:32;1720:55;6010:11;;;:::i;:::-;410:1670:14;;1677:26:32;410:1670:14;6023:7:32;;;;:::i;:::-;410:1670:14;;1677:26:32;;:::i;:::-;4372:33:33;;;;4349:21;1720:55:32;:::i;:::-;410:1670:14;8837:419:16;410:1670:14;3422:30:32;410:1670:14;3422:30:32;;410:1670:14;;3422:30:32;410:1670:14;;;;3422:30:32;;;;;;;-1:-1:-1;;;3422:30:32;;;5853:3;-1:-1:-1;410:1670:14;;3485:16:32;410:1670:14;;;;;;;;3485:62:32;;4866:14;;;:33;;;;3485:62;4862:63;;4955:21;;;;:::i;:::-;4979:4;;814:6:27;;;;;;;;;;;;;;;5016:22:32;;;:::i;:::-;5042:3;814:6:27;;;;;;;;;;;;;;;5067:23:32;;;:::i;:::-;1993:4:16;410:1670:14;;;;;;;5853:3:32;410:1670:14;;;;684:1:26;410:1670:14;5817:27:32;;;;4862:63;3422:30;8837:419:16;410:1670:14;4908:17:32;;;;4866:33;4884:15;;;4866:33;;3485:62;410:1670:14;;;;;;;3485:62:32;;3422:30;;;;;410:1670:14;3422:30:32;;410:1670:14;3422:30:32;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;3422:30:32;;;;;;;;;;5733:41;5761:13;8837:419:16;410:1670:14;5761:13:32;;;;410:1670:14;;;;;;;:::i;:::-;;;;;;;;;9373:38:16;9460:14;9406:4;9373:38;;;8490:3836;9545:34;;-1:-1:-1;9545:34:16;1264:4:25;9545:34:16;;1264:4:25;;-1:-1:-1;410:1670:14;;;;2135:428:29;;;;;;;410:1670:14;2135:428:29;;;;;-1:-1:-1;2135:428:29;;410:1670:14;2592:23:29;;2135:428;;;;;2592:23;:::i;:::-;-1:-1:-1;2572:70:29;;410:1670:14;10013:7:16;;;410:1670:14;;;1993:4:16;410:1670:14;;10013:44:16;;;;;;2135:428:29;410:1670:14;;;;10013:44:16;;;;;410:1670:14;10013:44:16;;;;;2099:4:25;410:1670:14;;;:::i;:::-;;1449:4:25;;;2099;410:1670:14;;;;;;1449:4:25;;;;:::i;:::-;410:1670:14;1449:4:25;;;2099;1449;410:1670:14;;;;;;1449:4:25;;;;:::i;:::-;;;;;;410:1670:14;;;;1449:4:25;;;;;:::i;:::-;;;;;;410:1670:14;;;;1449:4:25;;410:1670:14;;;:::i;:::-;;1449:4:25;;;2099;410:1670:14;;;2135:428:29;1449:4:25;410:1670:14;1449:4:25;;;410:1670:14;1449:4:25;;;;;;;;;;;2135:428:29;;1449:4:25;:::i;:::-;10013:44:16;;;-1:-1:-1;10013:44:16;;;;;;;;;;;;9541:2785;2232:5117;;9541:2785;1302:4:25;10090:28:16;;1302:4:25;;10310:185:16;;;10537:14;10310:185;410:1670:14;;;;;10310:185:16;;;;10537:14;:::i;:::-;10553:9;;476:66:26;5059:36:27;;476:66:26;;5120:21:27;;;5055:188;5256:10;5252:180;;10086:2240:16;;;2232:5117;;5252:180:27;410:1670:14;5282:4:27;;;410:1670:14;5282:29:27;;;;;410:1670:14;;5282:29:27;410:1670:14;5282:29:27;;;;-1:-1:-1;5282:29:27;;;;;;;;;;;;;5252:180;5350:4;;410:1670:14;;;5329:26:27;5325:97;;5252:180;;;;;5325:97;5375:32;410:1670:14;-1:-1:-1;410:1670:14;;;;5375:32:27;;;;;;;410:1670:14;5375:32:27;;;;2099:4:25;;;;;;410:1670:14;2099:4:25;;;410:1670:14;;2099:4:25;;;410:1670:14;2099:4:25;5375:32:27;;;;;;;;;;;;;5325:97;;;;;;;5375:32;;;410:1670:14;5375:32:27;410:1670:14;5375:32:27;;;;;;;:::i;:::-;;;;;5282:29;;;;:::i;:::-;;;;;410:1670:14;;2099:4:25;-1:-1:-1;2099:4:25;;;;;5055:188:27;5171:21;-1:-1:-1;5158:85:27;5055:188;5158:85;5215:17;410:1670:14;;5215:17:27;;;;10086:2240:16;1343:4:25;10596:31:16;;1343:4:25;;10819:185:16;;;;11049:14;10819:185;;11049:14;:::i;:::-;410:1670:14;;5714:4:27;;410:1670:14;10819:185:16;410:1670:14;;5714:29:27;410:1670:14;5714:29:27;;;5737:4;5714:29;;;2099:4:25;1449;5714:29:27;410:1670:14;5714:29:27;;;;;;;;;;;-1:-1:-1;5714:29:27;;;10592:1734:16;-1:-1:-1;410:1670:14;;;10819:185:16;;;5757:21:27;;5753:76;;5842:9;5838:170;;10592:1734:16;;;;;;;;2232:5117;;5838:170:27;5867:20;;;;;-1:-1:-1;410:1670:14;;;;;;5867:20:27;;;;;410:1670:14;5867:20:27;;;;410:1670:14;5867:20:27;;;;;;;;;;5838:170;5737:4;;410:1670:14;;;5905:26:27;5901:97;;5838:170;;;;;;;;5901:97;5977:5;;;:::i;:::-;5901:97;;;;5867:20;;;;:::i;:::-;;;;5753:76;410:1670:14;;5801:17:27;;;;5714:29;;;410:1670:14;5714:29:27;;410:1670:14;5714:29:27;;;;;;410:1670:14;5714:29:27;;;:::i;:::-;;;2099:4:25;;;;-1:-1:-1;2099:4:25;;;5714:29:27;;;;;-1:-1:-1;5714:29:27;;10592:1734:16;1400:4:25;11108:47:16;;1400:4:25;;410:1670:14;;;;;11281:67:16;;410:1670:14;11281:67:16;;410:1670:14;;;;;;1449:4:25;;;;;;410:1670:14;1449:4:25;;;;410:1670:14;;;;;1449:4:25;;;;;;;;410:1670:14;1449:4:25;;;;;;;:::i;:::-;;;410:1670:14;3116:4:25;410:1670:14;;3116:4:25;;;:::i;:::-;1449;;;410:1670:14;1449:4:25;;;;;;;;;;;;;;;;;;;;;;;;;410:1670:14;;;;;;;1993:4:16;410:1670:14;;;;1301:13:28;-1:-1:-1;1316:15:28;;;;;;1437:7;;;;;410:1670:14;1437:34:28;;;;;;410:1670:14;;;1437:34:28;;410:1670:14;1437:34:28;;;410:1670:14;;;;;;;;;;;;;;;;;-1:-1:-1;;410:1670:14;;;;;;1437:34:28;;;;;;-1:-1:-1;1437:34:28;;;;;;;;;;;;;;;11104:1222:16;2232:5117;;410:1670:14;;;;;;1449:4:25;410:1670:14;;;;1993:4:16;410:1670:14;;;;;;;2099:4:25;;410:1670:14;;;;;;;;;2099:4:25;410:1670:14;;;;;;;;;2099:4:25;410:1670:14;;;;;;2099:4:25;410:1670:14;3116:4:25;;410:1670:14;;;;;;;;;;1333:3:28;1356:15;;;;;;:::i;:::-;;410:1670:14;;1356:29:28;1352:65;;410:1670:14;;;;;1993:4:16;410:1670:14;1301:13:28;;1352:65;1394:23;410:1670:14;;1394:23:28;;;;1449:4:25;;410:1670:14;1449:4:25;;;;;;;410:1670:14;1449:4:25;410:1670:14;;;3116:4:25;;;:::i;:::-;410:1670:14;;;:::i;:::-;1449:4:25;;410:1670:14;1449:4:25;;;410:1670:14;:::i;:::-;1449:4:25;;;;;;;;;:::i;:::-;;;;;410:1670:14;;1449:4:25;;410:1670:14;:::i;:::-;;1449:4:25;;;;;;;;;;;11104:1222:16;11450:39;;-1:-1:-1;;;1449:4:25;11450:39:16;;1449:4:25;;11726:258:16;;410:1670:14;;;12020:29:16;410:1670:14;12020:29:16;;410:1670:14;;1449:4:25;410:1670:14;;12020:29:16;;11726:258;;410:1670:14;12020:29:16;;;2099:4:25;410:1670:14;;;;;11726:258:16;;410:1670:14;12020:29:16;;;;;;;-1:-1:-1;12020:29:16;;;11446:880;-1:-1:-1;410:1670:14;;;;11726:258:16;;-1:-1:-1;12020:43:16;;;;12090:63;;11446:880;;2232:5117;;12090:63;410:1670:14;12130:22:16;410:1670:14;12113:40:16;;410:1670:14;12113:40:16;;;410:1670:14;;-1:-1:-1;12113:40:16;410:1670:14;12113:40:16;:::i;:::-;12090:63;;;;;12020:29;;;410:1670:14;12020:29:16;;410:1670:14;12020:29:16;;;;;;410:1670:14;12020:29:16;;;:::i;:::-;;;2099:4:25;;;;-1:-1:-1;2099:4:25;;410:1670:14;12020:29:16;;;;;-1:-1:-1;12020:29:16;;11446:880;3116:4:25;410:1670:14;;;12276:27:16;;;;;;;410:1670:14;12276:27:16;2065:17894;2323:4:25;;;;;;;;;;;;;;;12463:36:16;;;12459:7486;2323:4:25;;;-1:-1:-1;12527:32:16;;1709:4:25;;2998:28:29;;;-1:-1:-1;2998:28:29;;;;;;;;:::i;:::-;410:1670:14;;;3116:4:25;;;;;;;;;;13612:37:16;25305:69;;13612:12;:37;;;;:::i;:::-;13592:57;2065:17894;;12523:5052;1878:4:25;13682:33:16;;1878:4:25;;2998:28:29;;;-1:-1:-1;2998:28:29;;;;;;;;:::i;:::-;410:1670:14;;;3116:4:25;;;;;;;;;;14069:38:16;13858:101;;14069:13;:38;;;;:::i;13678:3897::-;1912:4:25;14140:24:16;;1912:4:25;;2998:28:29;;;-1:-1:-1;2998:28:29;;;;;;;;:::i;:::-;410:1670:14;;;3116:4:25;;;;;;;;;;14376:33:16;25305:69;;14376:8;:33;;;;:::i;14136:3439::-;14442:31;;;-1:-1:-1;14442:31:16;1953:4:25;14442:31:16;;1953:4:25;;14710:258:16;;;;;;15013:11;14710:258;;-1:-1:-1;410:1670:14;;;;15073:67:16;;;15096:35;15073:67;;;;;;;410:1670:14;15073:67:16;;;;;:::i;:::-;15013:153;410:1670:14;;;;;;14710:258:16;;15013:153;;;;;;:::i;:::-;14993:173;15192:161;;;;410:1670:14;;15250:14:16;410:1670:14;;;;;;14710:258:16;;15250:14;:::i;:::-;15205:68;;;;;;410:1670:14;;;15205:68:16;;410:1670:14;;;;;15073:67:16;15205:68;;2099:4:25;;;;410:1670:14;;-1:-1:-1;;410:1670:14;;2099:4:25;;410:1670:14;;-1:-1:-1;;15205:68:16;;;;;;;;;;15192:161;2232:5117;;15192:161;410:1670:14;;;;;;;15330:22:16;410:1670:14;15313:40:16;;410:1670:14;15313:40:16;;;;;;:::i;14438:3137::-;2011:4:25;15386:35:16;;2011:4:25;;15650:250:16;;;;410:1670:14;;;;15936:25:16;410:1670:14;15936:25:16;;410:1670:14;15936:25:16;3116:4:25;15936:25:16;;410:1670:14;;;;;;15650:250:16;;15936:25;;;410:1670:14;;;;;;;;15650:250:16;;410:1670:14;15936:25:16;;;;;;;-1:-1:-1;15936:25:16;;;15382:2193;15650:250;;;;410:1670:14;;;15936:34:16;16001:8;;;15997:68;;15382:2193;;2232:5117;;15997:68;410:1670:14;16037:27:16;410:1670:14;16020:45:16;;410:1670:14;16020:45:16;;;410:1670:14;;-1:-1:-1;16020:45:16;410:1670:14;16020:45:16;:::i;15936:25::-;410:1670:14;15936:25:16;;;;;410:1670:14;15936:25:16;;;;;;410:1670:14;15936:25:16;;;:::i;:::-;;;2099:4:25;;;;;410:1670:14;;;;;;;;-1:-1:-1;15936:25:16;;;;;;;-1:-1:-1;15936:25:16;;;410:1670:14;;2099:4:25;-1:-1:-1;2099:4:25;;;;;15382:2193:16;2057:4:25;16098:36:16;;2057:4:25;;16416:331:16;;;410:1670:14;;;16783:35:16;410:1670:14;16783:35:16;;410:1670:14;16783:35:16;;;;410:1670:14;;;;;;16416:331:16;;;;16783:35;;;2099:4:25;;;;;;410:1670:14;2099:4:25;;;410:1670:14;;2099:4:25;;;410:1670:14;2099:4:25;16783:35:16;;410:1670:14;;;;;;;16416:331:16;;410:1670:14;16783:35:16;;;;;;;-1:-1:-1;16783:35:16;;;16094:1481;410:1670:14;16416:331:16;410:1670:14;;;;16416:331:16;;-1:-1:-1;16783:49:16;;;16859:69;;;16094:1481;;2232:5117;;16859:69;410:1670:14;16899:28:16;410:1670:14;16882:46:16;;410:1670:14;16882:46:16;;;410:1670:14;;-1:-1:-1;16882:46:16;410:1670:14;16882:46:16;:::i;16783:35::-;;;410:1670:14;16783:35:16;;410:1670:14;16783:35:16;;;;;;410:1670:14;16783:35:16;;;:::i;:::-;;;2099:4:25;;;;-1:-1:-1;2099:4:25;;16416:331:16;16783:35;;;;;-1:-1:-1;16783:35:16;;16094:1481;16961:32;;;2099:4:25;16961:32:16;16957:618;;16094:1481;;2232:5117;;16957:618;17226:254;410:1670:14;;17533:14:16;410:1670:14;;;;;17226:254:16;;17533:14;:::i;:::-;17226:254;;410:1670:14;4121:60:27;;;;;;410:1670:14;;;4121:60:27;;410:1670:14;;4160:4:27;4121:60;;;2099:4:25;410:1670:14;;;;;;;2099:4:25;410:1670:14;;;17226:254:16;;410:1670:14;;;;;-1:-1:-1;;410:1670:14;;;-1:-1:-1;410:1670:14;;;;4121:60:27;;;;;;;;;;;;16957:618:16;;;;4121:60:27;;;;:::i;:::-;;;;12459:7486:16;17671:28;;;;;2323:4:25;;-1:-1:-1;2323:4:25;;17774::16;;;17747:32;17774:4;;;17747:32;;:::i;17667:2260::-;2484:4:25;17812:28:16;;2484:4:25;;2998:28:29;;;-1:-1:-1;2998:28:29;;;;;;;;:::i;:::-;410:1670:14;;;3116:4:25;;;;;;;;;;18052:33:16;25305:69;;18052:8;:33;;;;:::i;17808:2119::-;2519:4:25;18118:25:16;;2519:4:25;;2998:28:29;;;-1:-1:-1;2998:28:29;;;;;;;;:::i;:::-;410:1670:14;;;3116:4:25;;;;;;;;;;18355:34:16;25305:69;;18355:9;:34;;;;:::i;18114:1813::-;2558:4:25;18422:29:16;;2558:4:25;;2998:28:29;;;-1:-1:-1;2998:28:29;;;;;:::i;:::-;24315:325:16;;;410:1670:14;;;;3116:4:25;;;;;;;;;;24669:33:16;25305:69;;18527:4;24669:33;;;;;;;:::i;:::-;24712:101;;;18418:1509;18479:53;;;2232:5117;;24712:101;410:1670:14;24315:325:16;410:1670:14;;;;24315:325:16;;410:1670:14;24772:14:16;410:1670:14;;;;;24315:325:16;;24772:14;:::i;:::-;410:1670:14;;;3116:4:25;;;;:::i;:::-;-1:-1:-1;3116:4:25;;24725:88:16;;;;;;410:1670:14;-1:-1:-1;410:1670:14;;;;24725:88:16;;;;;;;410:1670:14;24725:88:16;;24315:325;;410:1670:14;;;;24315:325:16;;410:1670:14;;;;24315:325:16;;24765:4;;24725:88;;;;:::i;:::-;;;;;;;;;;;;;24712:101;;;;24725:88;;;;:::i;:::-;;;;18418:1509;18565:30;;;;2598:4:25;18565:30:16;;2598:4:25;;18670:10:16;;;18643:38;18670:10;;;18643:38;;:::i;18561:1366::-;18714:33;;;;;2641:4:25;18714:33:16;;2641:4:25;;410:1670:14;;;;;;;19029:331:16;;;;410:1670:14;;19414:14:16;410:1670:14;;;;;19029:331:16;;19414:14;:::i;:::-;19029:331;;410:1670:14;;;4605:43:27;410:1670:14;4605:43:27;;;4638:4;410:1670:14;4638:4:27;;4605:43;4638:4;;4605:43;;;2099:4:25;;;;;;410:1670:14;2099:4:25;;;410:1670:14;;2099:4:25;;;410:1670:14;2099:4:25;4605:43:27;;;;;;;;;;;-1:-1:-1;4605:43:27;;;18710:1217:16;410:1670:14;19029:331:16;410:1670:14;;;;19029:331:16;;4662:23:27;;4658:55;;410:1670:14;;3116:4:25;;;:::i;:::-;-1:-1:-1;3116:4:25;;4723:81:27;;;;;-1:-1:-1;410:1670:14;4723:81:27;410:1670:14;;;;4723:81:27;;;;;;;410:1670:14;4723:81:27;;4638:4;4723:81;;;;:::i;:::-;;;;;;;;;;;;;18710:1217:16;2232:5117;;4658:55:27;410:1670:14;;;4694:19:27;;;;4605:43;;;410:1670:14;4605:43:27;;410:1670:14;4605:43:27;;;;;;410:1670:14;4605:43:27;;;:::i;:::-;;;2099:4:25;;;;-1:-1:-1;2099:4:25;;19029:331:16;4605:43:27;;;;;-1:-1:-1;4605:43:27;;18710:1217:16;19474:34;;-1:-1:-1;19474:34:16;-1:-1:-1;;2685:4:25;19474:34:16;;2685:4:25;;2998:28:29;;;-1:-1:-1;2998:28:29;;;;;:::i;:::-;410:1670:14;;;3116:4:25;;;;;;;;;;19720:39:16;25305:69;;19720:14;:39;;;;:::i;2008:19933::-;20024:32;;;;;;410:1670:14;20024:32:16;;;;;;;;;;20020:1911;410:1670:14;;;2998:28:29;;;;;;;;-1:-1:-1;2998:28:29;;;;:::i;:::-;410:1670:14;;;3116:4:25;;;;;;;;;;21037:37:16;25305:69;;21037:12;:37;;;;:::i;20020:1911::-;3073:4:25;;21099:36:16;;;3073:4:25;;2998:28:29;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;410:1670:14;;3116:4:25;410:1670:14;;;;21345:71:16;410:1670:14;21345:71:16;;;21368:27;21345:71;;;;;3116:4:25;;;;;;:::i;:::-;;;;;;;;;;410:1670:14;;;;;;;;3116:4:25;;;;;;;-1:-1:-1;3116:4:25;;;;;;;21345:71:16;;;;;;;;;;;-1:-1:-1;21345:71:16;;;;;3116:4:25;21345:71:16;;;;;;:::i;:::-;21324:93;21333:4;;;21324:93;;;;:::i;3116:4:25:-;;;;;;;;;;;;;;;;;;410:1670:14;;;3116:4:25;;;;;;;;;;410:1670:14;3116:4:25;;;;;410:1670:14;3116:4:25;;;;410:1670:14;;3116:4:25;;;;;;410:1670:14;3116:4:25;;;;;;:::i;:::-;;;;;;;;;;;;;;21095:836:16;21442:33;;;;;;;3116:4:25;21442:33:16;;;;;21438:493;3116:4:25;;;21575:155:16;;;;410:1670:14;;;;;21575:155:16;;1737:22:27;-1:-1:-1;410:1670:14;;;;;;;1845:29:27;;;;;;1841:179;1845:29;;;1893:15;;;1841:179;;-1:-1:-1;4479:1234:55;;;;;;;;;;;;;;;410:1670:14;4479:1234:55;;2089:17:27;4479:1234:55;;;;;;;;;;;;;;;;;-1:-1:-1;4479:1234:55;;;;;;;1841:179:27;410:1670:14;;;;21438:493:16;;;;2232:5117;;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;4479:1234:55;;;;;;;-1:-1:-1;4479:1234:55;;;1841:179:27;1927:28;1993:4:16;;1974:8:27;1923:97;1841:179;;1923:97;2004:16;410:1670:14;;2004:16:27;;;;410:1670:14;;;;;;;;;;1208:57;1249:16;410:1670;;1249:16;;;;3116:4:25;410:1670:14;3116:4:25;410:1670:14;3116:4:25;;410:1670:14;3116:4:25;410:1670:14;;;;;;3116:4:25;-1:-1:-1;3116:4:25;;;;;;410:1670:14;;3116:4:25;;;:::o;:::-;;;;;;;;:::o;:::-;1449;3116;;;;;;;;;;;;;:::o;:::-;410:1670:14;3116:4:25;;;;;;;;;;;;;:::o;:::-;410:1670:14;3116:4:25;;;;;;;;;;;410:1670:14;3116:4:25;:::o;:::-;410:1670:14;3116:4:25;;;;;;;;;;;;;:::o;:::-;;410:1670:14;;3116:4:25;410:1670:14;;3116:4:25;;;;;;;;;;;;;:::o;:::-;;;;;;410:1670:14;;;;3116:4:25;;;:::o;:::-;;;;;;;;;;:::i;:::-;410:1670:14;3116:4:25;410:1670:14;;3116:4:25;;;:::i;:::-;;;;-1:-1:-1;3116:4:25;;;;:::o;:::-;410:1670:14;3116:4:25;:::o;1449:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;772:::-;;;;;;;;;;;;;;;:::i;:::-;410:1670:14;3116:4:25;410:1670:14;;3116:4:25;;;:::i;:::-;772;;;;;;;;;;;;-1:-1:-1;772:4:25;;;;;;;;3116;;;;;772;:::o;22691:802:16:-;;;;2998:28:29;22691:802:16;2998:28:29;;:::i;:::-;410:1670:14;;;23072:264:16;410:1670:14;3116:4:25;;;;;;;-1:-1:-1;;3116:4:25;;;;;;;;23365:33:16;25305:69;;;23365:33;;;;;;:::i;:::-;23345:53;;23408:78;;22691:802;;:::o;23408:78::-;410:1670:14;23072:264:16;;;;410:1670:14;23467:14:16;23072:264;;;;23467:14;:::i;:::-;23421:65;;;;;;23072:264;410:1670:14;;23421:65:16;;23460:4;23421:65;;;2099:4:25;410:1670:14;;;;;;;;2099:4:25;23072:264:16;;;410:1670:14;;;;;;;;;;;;;;;;;23421:65:16;;;;;;;;;;22691:802;:::o;23421:65::-;;;;:::i;:::-;22691:802::o;23421:65::-;23072:264;410:1670:14;2099:4:25;;;;;;;;410:1670:14;;;;;;;;;;;;;2099:4:25;;410:1670:14;;;;2099:4:25;410:1670:14;;;;;;;;;;;;;;;;:::i;:::-;;:::o;777:298:17:-;410:1670:14;;;;;239:1:17;855:33;;239:1;;410:1670:14;;239:1:17;410:1670:14;;904:15:17;:::o;851:218::-;940:35;;-1:-1:-1;1147:1:26;940:35:17;1147:1:26;;1006:4:17;;991:20;:::o;410:1670:14:-;;;;;;;;;;;;;;;;;;:::o;1066:379:27:-;;;;;410:1670:14;;1151:22:27;410:1670:14;;1215:5:27;;;;;:::i;1147:292::-;476:66:26;1256:35:27;;1252:119;;1147:292;1422:5;;;;;:::i;1252:119::-;410:1670:14;;;;1319:37:27;410:1670:14;1319:37:27;;1350:4;1319:37;;;2099:4:25;1319:37:27;;1449:4:25;1319:37:27;;;;;;;;;815:1:26;1319:37:27;;;1252:119;-1:-1:-1;1252:119:27;1311:45;1252:119;;1319:37;;;;;;;;;;;;;;;:::i;:::-;;;2099:4:25;;;;;;-1:-1:-1;1422:5:27;1319:37;;;;;-1:-1:-1;1319:37:27;;814:6;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;796:157:28;;;410:1670:14;901:7:28;;;410:1670:14;901:45:28;;;;;;;410:1670:14;;;;;;;;;;901:45:28;;;;;410:1670:14;901:45:28;;410:1670:14;901:45:28;;;2099:4:25;410:1670:14;;;;2099:4:25;410:1670:14;;;;2099:4:25;410:1670:14;;;;2099:4:25;901:45:28;;;;;;;;796:157;:::o;410:1670:14:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;1949:700:29:-;;2135:428;;;;;2592:23;2135:428;;;;;;;;;;2592:23;;:::i;:::-;-1:-1:-1;2572:70:29;;1949:700::o;:::-;;2135:428;;;;;;;2592:23;2135:428;;;;;;;;;;2592:23;;:::i;1949:700::-;;2135:428;;;;;;;2592:23;2135:428;;;;;;;;;;2592:23;;:::i;410:1670:14:-;;;;;;;;;:::o;1793:257:28:-;;;;410:1670:14;;;;1928:4:28;1911:22;1928:4;;1957:6;;;;;:::i;1907:136::-;368:25:50;;;;;364:50;;2024:18:28;410:1670:14;;2024:18:28;;:::i;364:50:50:-;402:12;410:1670:14;;402:12:50;;;;7184:627:31;410:1670:14;;;;;;;;7306:15:31;7302:56;;7184:627;410:1670:14;;;;;7624:31:31;;;;;410:1670:14;;2099:4:25;;410:1670:14;;;;2099:4:25;410:1670:14;;;;;;7624:31:31;;410:1670:14;3116:4:25;;;;;;;;;;;;7485:255:31;;3116:4:25;;410:1670:14;3116:4:25;410:1670:14;;7614:42:31;;7485:255;;;;;7686:28;;7568:16;;7485:255;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;7485:255:31;;;;;;;;;;:::i;:::-;410:1670:14;7450:312:31;;410:1670:14;7184:627:31;:::o;7302:56::-;7342:16;;;7302:56;;410:1670:14;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;684:1:26:-;;;;;;;;;;:::o;2139:452:32:-;;410:1670:14;2139:452:32;2427:93;2139:452;410:1670:14;;2472:32:32;;;;410:1670:14;;;;;;;;;;;;;;;;2472:32:32;;;;;;:::i;:::-;410:1670:14;2462:43:32;;2427:93;410:1670:14;;2427:93:32;;;2472:32;2427:93;;;;410:1670:14;;;;;;;;;;;;;;;;;;;;;;;;;;2427:93:32;;2472:32;2427:93;;;;;;:::i;6387:196::-;410:1670:14;;;;;;;6523:15:32;410:1670:14;;;6387:196:32;:::o;6523:53::-;6504:72;6387:196;:::o;410:1670:14:-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;743:1618:33:-;;883:1;869:15;;865:48;;410:1670:14;;;;1033:7:33;;;:::i;:::-;1047:1;;410:1670:14;;;;;;;;1002:48:33;410:1670:14;;1042:7:33;410:1670:14;;;1042:7:33;:::i;1002:48::-;982:68;1186:9;1038:1;1181:1164;1197:18;410:1670:14;;;1197:18:33;;;;743:1618;;;;;;;;:::o;1217:3::-;1275:7;;;;;;:::i;:::-;410:1670:14;1284:11:33;;410:1670:14;;;1284:11:33;;;:::i;:::-;410:1670:14;;;;;1354:30:33;410:1670:14;1354:30:33;;410:1670:14;;;;1354:30:33;;;;;;;;;;;;;;;;;;;;;;;;1038:1;;;1354:30;;;1217:3;410:1670:14;;;;;;;;;;;;;1470:61:33;410:1670:14;1470:15:33;;:61;;;410:1670:14;;;1470:61:33;410:1670:14;;1571:28:33;;;;410:1670:14;1571:28:33;;;;;;2099:4:25;1449;1571:28:33;;;;;;;;;;;1038:1;1571:28;;;1470:61;410:1670:14;;;;;4067:14:32;;;:33;;;;;;1470:61:33;4063:63:32;;4173:3;;814:6:27;;;;;;;;;;;;;4206:28:32;;;;:::i;:::-;4278:4;;814:6:27;;;;;;;;;;;4322:23:32;4266:34;;;;;:::i;:::-;4322:23;;:::i;:::-;1810:73:33;410:1670:14;;;1038:1:33;1810:73;;;410:1670:14;;;;;1956:24:33;;410:1670:14;;;;2131:11:33;;1677:26:32;410:1670:14;883:1:33;1720:55:32;410:1670:14;;;2131:11:33;;;:::i;1677:26:32:-;2088:33:33;;;;2065:21;1720:55:32;:::i;:::-;1956:254:33;;410:1670:14;;;3116:4:25;;;;;;;;;;;;;;;;;;1038:1:33;3116:4:25;;2228:69:33;;;;;1038:1;410:1670:14;;;;;;;2228:69:33;;;;;;;410:1670:14;2228:69:33;;;;;410:1670:14;;;;;;;;;2099:4:25;410:1670:14;;;;;;;;;;:::i;:::-;2228:69:33;;;;;;;;;;;;;;;;;;1956:254;2315:15;;;;;1217:3;410:1670:14;1186:9:33;;;;2228:69;3116:4:25;;;;;;;;;;;-1:-1:-1;;3116:4:25;;;2228:69:33;;;;;;;3116:4:25;;;;1038:1:33;3116:4:25;;1038:1:33;3116:4:25;;;;;;1038:1:33;3116:4:25;;1038:1:33;3116:4:25;1956:254:33;;;;;;1038:1;1956:254;;1810:73;1038:1;1810:73;;;814:6:27;;;;;1038:1:33;814:6:27;;1038:1:33;814:6:27;;;;;;1038:1:33;814:6:27;;1038:1:33;814:6:27;4063:63:32;410:1670:14;;;4109:17:32;;;;4067:33;4085:15;;;4067:33;;1571:28:33;;;;;;;;;;;;;;;;;:::i;:::-;;;2099:4:25;;;;;;1571:28:33;;;;;;;;;;;410:1670:14;;2099:4:25;1038:1:33;2099:4:25;;;;;1470:61:33;;;;1354:30;;;;;;;;;;;;;-1:-1:-1;1354:30:33;;;;;;:::i;:::-;;;;;;;865:48;893:20;410:1670:14;;893:20:33;;;;658:339:55;-1:-1:-1;658:339:55;;;;;796:145;;410:1670:14;;;658:339:55:o;410:1670:14:-;;;;;;;;;;;;;;;;;;;;;;;2832:1464:55;;3010:1234;;2832:1464;-1:-1:-1;3010:1234:55;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3010:1234:55;;;;;;;2832:1464;410:1670:14;;;;2832:1464:55:o;410:1670:14:-;;3010:1234:55;410:1670:14;;;;3010:1234:55;;410:1670:14;;;;3010:1234:55;410:1670:14;;;;3010:1234:55;410:1670:14;;;;3010:1234:55;;;;;;;-1:-1:-1;3010:1234:55;;"},"methodIdentifiers":{"astraCLSwapCallback(int256,int256,bytes)":"11c17848","collectRewards(bytes)":"709a1cc2","execute(bytes,bytes[])":"24856bc3","execute(bytes,bytes[],uint256)":"3593564c","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"samb\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seaportV1_5\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seaportV1_4\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"openseaConduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nftxZap\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"x2y2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"foundation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sudoswap\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"elementMarket\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nft20Zap\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cryptopunks\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"looksRareV2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"routerRewardsDistributor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"looksRareRewardsDistributor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"looksRareToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"classicFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"clFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"pairInitCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"poolInitCodeHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct RouterParameters\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AMBNotAccepted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BuyPunkFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidAmountOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLTooLittleReceived\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLTooMuchRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicInvalidPath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicTooLittleReceived\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicTooMuchRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commandIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FromAddressIsNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAMB\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBips\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commandType\",\"type\":\"uint256\"}],\"name\":\"InvalidCommandType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOwnerERC1155\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOwnerERC721\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SliceOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionDeadlinePassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnableToClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeCast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsSent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"looksRareClaim\",\"type\":\"bytes\"}],\"name\":\"collectRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"commands\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"inputs\",\"type\":\"bytes[]\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"commands\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"inputs\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}},\"collectRewards(bytes)\":{\"params\":{\"looksRareClaim\":\"The data required by LooksRare to claim reward tokens\"}},\"execute(bytes,bytes[])\":{\"params\":{\"commands\":\"A set of concatenated commands, each 1 byte in length\",\"inputs\":\"An array of byte strings containing abi encoded inputs for each command\"}},\"execute(bytes,bytes[],uint256)\":{\"params\":{\"commands\":\"A set of concatenated commands, each 1 byte in length\",\"deadline\":\"The deadline by which the transaction must be executed\",\"inputs\":\"An array of byte strings containing abi encoded inputs for each command\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"AMBNotAccepted()\":[{\"notice\":\"Thrown when attempting to send AMB directly to the contract\"}],\"ExecutionFailed(uint256,bytes)\":[{\"notice\":\"Thrown when a required command has failed\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when attempting to execute commands and an incorrect number of inputs are provided\"}],\"TransactionDeadlinePassed()\":[{\"notice\":\"Thrown when executing commands with an expired deadline\"}],\"UnsafeCast()\":[{\"notice\":\"Thrown when a valude greater than type(uint160).max is cast to uint160\"}]},\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"},\"collectRewards(bytes)\":{\"notice\":\"Fetches users' LooksRare rewards and sends them to the distributor contract\"},\"execute(bytes,bytes[])\":{\"notice\":\"Executes encoded commands along with provided inputs.\"},\"execute(bytes,bytes[],uint256)\":{\"notice\":\"Executes encoded commands along with provided inputs. Reverts if deadline has expired.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/UniversalRouter.sol\":\"UniversalRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/UniversalRouter.sol\":{\"keccak256\":\"0x7e8f4451e4f118b7fd8ac86283d80652f6e63f2edca379a98b8f2585aa339c9f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e448d96c45d2db355b327bbb9bbf4e9da057b648662224a03dca4ff14758935a\",\"dweb:/ipfs/QmUnz9YJTD1ua3r5AWgdnQhwNVy4jLMhstGq5UDLwTDDmJ\"]},\"contracts/base/Callbacks.sol\":{\"keccak256\":\"0x4c097b77964ea0a23f25b1f2c46165854f90cdff9f9d192ccb61ecb09911556a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9b77f5b4c22a777475b57856e96498defef9c8c6656a91c8a6d6fd7b0199f748\",\"dweb:/ipfs/Qmehq1yzubWxCwGcewxLEtRhDtAiczsvbMyNE2mMm4hLRU\"]},\"contracts/base/Dispatcher.sol\":{\"keccak256\":\"0xaef76728e3dfdd285a6ee4bbd1ee25af917e5bc5d7b9d7344fc90ffd6b5b9f66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ccef565df719b72cc334dc90769beef9bc268c71eb1c888e57a2dcfbf50e7bc\",\"dweb:/ipfs/Qmf7Ki5JKG3QA5cs7T6egQw2PiE35FYVuL82R9fvCe15jC\"]},\"contracts/base/LockAndMsgSender.sol\":{\"keccak256\":\"0x6f816683f08585270627953efeb3a30e59c1353b9012430975e992e7132a9446\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3b9cbd8e0757a046722fdb22c59727b974410943b51027b070e79640628efe4\",\"dweb:/ipfs/QmXNTi5j5au1UQQzfWUqmejFPEsrxcmyS24dS8KJWzaJfX\"]},\"contracts/base/RewardsCollector.sol\":{\"keccak256\":\"0x9554b98222c6551eae14570a84cf7f535ca9601ee3d53cfd9d900acfd67fcd92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b2a90f38ddf372a34c4243021f2ffc8ace0d684d4f4951bc092a1b38909544a1\",\"dweb:/ipfs/QmRCj4cof2U6hm4JHTuQdSCgAKM34hHQfBVKMtdxaBBMCk\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/IRewardsCollector.sol\":{\"keccak256\":\"0x394a3c99a6ef18c0de171e85f8c6352eb3f6f1c5165fe9a2fdc4db181dd407b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9937d3b2df12264789f3bbf053a0b044b3d21c86c39dac4757a9a40bae6185c0\",\"dweb:/ipfs/QmayA3uwk1wXCA8K1R5HrnszaPL9ymUSDwyWxmbtv2ujXP\"]},\"contracts/interfaces/IUniversalRouter.sol\":{\"keccak256\":\"0xf6b28f199374750d5475fce9d91e0c0dfb53b79e9cb450e50302353958503197\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4f792c05120a47d714ba54996373bf9b0194aeebefb3dae47b72f23518b92d5e\",\"dweb:/ipfs/QmPQAdm2br7S54wr7hbqSpbWPPf5jDxutCmT7nqBqoJXxX\"]},\"contracts/interfaces/external/ICryptoPunksMarket.sol\":{\"keccak256\":\"0x9957ab4197ffa82f9d068e96cfe9a46f2398b9388531dec8622cd3c45c02f95c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://495c05543031c6b310127f971040a1c65d786f9e3842843ba54d390f51e54ea0\",\"dweb:/ipfs/QmV3hT4aDPZtVrVRBLXWV1P6aRFQMBbgGE2hsn84P4CLfJ\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Commands.sol\":{\"keccak256\":\"0x746a70c0150d4ee20fcc2c88309a6862776126ef62571e58b221d06829eb4059\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f47d1b6317a0ba3a82bd44a818d6f71b771452122980fd562c543c18acb458b9\",\"dweb:/ipfs/QmS28g4jDqjG38bpAV7U5nT4ZcWs7hgcu8rdbYmWvcNMpc\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/Payments.sol\":{\"keccak256\":\"0xe8df3a7f09cf90068f23ebb7020b3464f564acc432165ac8a8d6e3ab89d2cf52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d0af26f1bf6a7d46fc5d4c07172aec8a3776f221e120c2f9e5bbb9519c891e79\",\"dweb:/ipfs/QmQWeaLQYwyy39DUnA2dTqUQYh6pHDZYmQtnGR21h4Rag9\"]},\"contracts/modules/Permit2Payments.sol\":{\"keccak256\":\"0xdf94a5fa420ead1b4287c3d6b0458cb5fd2da25d6914a34a40b8c0a421d34bd8\",\"urls\":[\"bzz-raw://7d6ba73c1b900b6a054a041555c9579b4e2e3b78d43b677fd556abe9141debc8\",\"dweb:/ipfs/QmS4Y8yk4k6bvackyLmRuqUMh4FhRa7MMA26FnsNZ57vAg\"]},\"contracts/modules/astra/cl/BytesLib.sol\":{\"keccak256\":\"0x37cc4ff61caf36538fe9354d4613e79add52f09449aff50e2b6ad122c6e4b426\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e538b26099c2dba25055409491f0876f19f87a939b53c6556b92796d33fa2fd\",\"dweb:/ipfs/QmVs4iUfgxWoXrmN2HTtcMU1SMi8FThceoKnGxkyUHYEpq\"]},\"contracts/modules/astra/cl/CLPath.sol\":{\"keccak256\":\"0xb516717967d5d422a307b2ff61eb4e20711bfaf751dad9ece9e482b275f47bf1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e1596db3a1b3cac83d7aa590ebbf6b2054a0488bb4945b223f63ac2de51e0ec\",\"dweb:/ipfs/QmZVRozX6KTmwLAwe9DY75S3Cr47vKnsmdibXQELrzo9aF\"]},\"contracts/modules/astra/cl/CLSwapRouter.sol\":{\"keccak256\":\"0x84da24fe3d63af99dbc9f38a6d9f94f80ea2df108f9d1ae945c4a7d2140cedfc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7c7125c913ccdea969643316e5bcbda9e61a2d4d56c51ba927f9608648846f26\",\"dweb:/ipfs/QmVhCqRGCoGJpHzw3e6EjWFbFAuZ8vMr8PcUdQq9wbmcFo\"]},\"contracts/modules/astra/classic/AstraClassicLibrary.sol\":{\"keccak256\":\"0x6956745d167ccf501aa7840cc05ed933c954c3a9689b3a976b94579d403983cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6e0159b0431df94021a767493b402ecc3082faf41a03c8a0456ef2160590979\",\"dweb:/ipfs/QmWQ2GkkdyuFz5veyykxxCAa4LbRLMBd61fnMJaSdee1BJ\"]},\"contracts/modules/astra/classic/ClassicSwapRouter.sol\":{\"keccak256\":\"0x5425292304e4129f6d7ed68dafd55c5d3f7251ed17517c38ef798251a426cb33\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5046786ab9f70b7fb930560bc9ea16f2181fab07eeb6be97a8bc85c632d2166b\",\"dweb:/ipfs/QmPc8PajkQaLRYNSckaSAaLyYETddpRvJWxbD9PhcLmwES\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/libraries/SafeCast160.sol\":{\"keccak256\":\"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7\",\"dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi\"]},\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/base/Callbacks.sol":{"Callbacks":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234610016576103d8908161001c8239f35b600080fdfe60808060405260048036101561001457600080fd5b600091823560e01c90816301ffc9a71461023357508063150b7a02146101a6578063bc197c81146100e25763f23a6e611461004e57600080fd5b346100de5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100de57610085610321565b5061008e610349565b5060843567ffffffffffffffff81116100da576100ae925036910161036c565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b8280fd5b5080fd5b50346100de5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100de5761011a610321565b50610123610349565b5067ffffffffffffffff6044358181116101a257610144903690840161039a565b50506064358181116101a25761015d903690840161039a565b50506084359081116100da57610176925036910161036c565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b8380fd5b50346100de5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100de576101de610321565b506101e7610349565b5060643567ffffffffffffffff81116100da57610207925036910161036c565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b919050346100da5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da57357fffffffff0000000000000000000000000000000000000000000000000000000081168091036100da57602092507f4e2312e00000000000000000000000000000000000000000000000000000000081149081156102f7575b81156102cd575b5015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386102c6565b7f150b7a0200000000000000000000000000000000000000000000000000000000811491506102bf565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361034457565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361034457565b9181601f840112156103445782359167ffffffffffffffff8311610344576020838186019501011161034457565b9181601f840112156103445782359167ffffffffffffffff8311610344576020808501948460051b0101116103445756fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x16 JUMPI PUSH2 0x3D8 SWAP1 DUP2 PUSH2 0x1C DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x233 JUMPI POP DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0xE2 JUMPI PUSH4 0xF23A6E61 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xDE JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDE JUMPI PUSH2 0x85 PUSH2 0x321 JUMP JUMPDEST POP PUSH2 0x8E PUSH2 0x349 JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDA JUMPI PUSH2 0xAE SWAP3 POP CALLDATASIZE SWAP2 ADD PUSH2 0x36C JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xDE JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDE JUMPI PUSH2 0x11A PUSH2 0x321 JUMP JUMPDEST POP PUSH2 0x123 PUSH2 0x349 JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x1A2 JUMPI PUSH2 0x144 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x39A JUMP JUMPDEST POP POP PUSH1 0x64 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x1A2 JUMPI PUSH2 0x15D SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x39A JUMP JUMPDEST POP POP PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0xDA JUMPI PUSH2 0x176 SWAP3 POP CALLDATASIZE SWAP2 ADD PUSH2 0x36C JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xDE JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDE JUMPI PUSH2 0x1DE PUSH2 0x321 JUMP JUMPDEST POP PUSH2 0x1E7 PUSH2 0x349 JUMP JUMPDEST POP PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDA JUMPI PUSH2 0x207 SWAP3 POP CALLDATASIZE SWAP2 ADD PUSH2 0x36C JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST SWAP2 SWAP1 POP CALLVALUE PUSH2 0xDA JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDA JUMPI CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0xDA JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x2F7 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x2CD JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x2C6 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x2BF JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x344 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x344 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x344 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x344 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x344 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x344 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x344 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x344 JUMPI JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"570:883:15:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":841,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_1409":{"entryPoint":801,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_uint256_dyn_calldata":{"entryPoint":922,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata":{"entryPoint":876,"id":null,"parameterSlots":2,"returnSlots":2}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260048036101561001457600080fd5b600091823560e01c90816301ffc9a71461023357508063150b7a02146101a6578063bc197c81146100e25763f23a6e611461004e57600080fd5b346100de5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100de57610085610321565b5061008e610349565b5060843567ffffffffffffffff81116100da576100ae925036910161036c565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b8280fd5b5080fd5b50346100de5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100de5761011a610321565b50610123610349565b5067ffffffffffffffff6044358181116101a257610144903690840161039a565b50506064358181116101a25761015d903690840161039a565b50506084359081116100da57610176925036910161036c565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b8380fd5b50346100de5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100de576101de610321565b506101e7610349565b5060643567ffffffffffffffff81116100da57610207925036910161036c565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b919050346100da5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da57357fffffffff0000000000000000000000000000000000000000000000000000000081168091036100da57602092507f4e2312e00000000000000000000000000000000000000000000000000000000081149081156102f7575b81156102cd575b5015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386102c6565b7f150b7a0200000000000000000000000000000000000000000000000000000000811491506102bf565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361034457565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361034457565b9181601f840112156103445782359167ffffffffffffffff8311610344576020838186019501011161034457565b9181601f840112156103445782359167ffffffffffffffff8311610344576020808501948460051b0101116103445756fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x233 JUMPI POP DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0xE2 JUMPI PUSH4 0xF23A6E61 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xDE JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDE JUMPI PUSH2 0x85 PUSH2 0x321 JUMP JUMPDEST POP PUSH2 0x8E PUSH2 0x349 JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDA JUMPI PUSH2 0xAE SWAP3 POP CALLDATASIZE SWAP2 ADD PUSH2 0x36C JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xDE JUMPI PUSH1 0xA0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDE JUMPI PUSH2 0x11A PUSH2 0x321 JUMP JUMPDEST POP PUSH2 0x123 PUSH2 0x349 JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x1A2 JUMPI PUSH2 0x144 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x39A JUMP JUMPDEST POP POP PUSH1 0x64 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x1A2 JUMPI PUSH2 0x15D SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x39A JUMP JUMPDEST POP POP PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0xDA JUMPI PUSH2 0x176 SWAP3 POP CALLDATASIZE SWAP2 ADD PUSH2 0x36C JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xDE JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDE JUMPI PUSH2 0x1DE PUSH2 0x321 JUMP JUMPDEST POP PUSH2 0x1E7 PUSH2 0x349 JUMP JUMPDEST POP PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDA JUMPI PUSH2 0x207 SWAP3 POP CALLDATASIZE SWAP2 ADD PUSH2 0x36C JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST SWAP2 SWAP1 POP CALLVALUE PUSH2 0xDA JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xDA JUMPI CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0xDA JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x2F7 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x2CD JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x2C6 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x2BF JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x344 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x344 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x344 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x344 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x344 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x344 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x344 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x344 JUMPI JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"570:883:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;570:883:15;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1287:49;;1302:34;1287:49;;:101;;;;;570:883;1287:157;;;;570:883;;;;;;;1287:157;1419:25;1404:40;;;1287:157;;;:101;1355:33;1340:48;;;-1:-1:-1;1287:101:15;;570:883;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"ERC Callback Support\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Implements various functions introduced by a variety of ERCs for security reasons. All are called by external contracts to ensure that this contract safely supports the ERC in question.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/Callbacks.sol\":\"Callbacks\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/base/Callbacks.sol\":{\"keccak256\":\"0x4c097b77964ea0a23f25b1f2c46165854f90cdff9f9d192ccb61ecb09911556a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9b77f5b4c22a777475b57856e96498defef9c8c6656a91c8a6d6fd7b0199f748\",\"dweb:/ipfs/Qmehq1yzubWxCwGcewxLEtRhDtAiczsvbMyNE2mMm4hLRU\"]}},\"version\":1}"}},"contracts/base/Dispatcher.sol":{"Dispatcher":{"abi":[{"inputs":[],"name":"BalanceTooLow","type":"error"},{"inputs":[],"name":"BuyPunkFailed","type":"error"},{"inputs":[],"name":"CLInvalidAmountOut","type":"error"},{"inputs":[],"name":"CLInvalidCaller","type":"error"},{"inputs":[],"name":"CLInvalidSwap","type":"error"},{"inputs":[],"name":"CLTooLittleReceived","type":"error"},{"inputs":[],"name":"CLTooMuchRequested","type":"error"},{"inputs":[],"name":"ClassicInvalidPath","type":"error"},{"inputs":[],"name":"ClassicTooLittleReceived","type":"error"},{"inputs":[],"name":"ClassicTooMuchRequested","type":"error"},{"inputs":[],"name":"ContractLocked","type":"error"},{"inputs":[],"name":"FromAddressIsNotOwner","type":"error"},{"inputs":[],"name":"InsufficientAMB","type":"error"},{"inputs":[],"name":"InsufficientToken","type":"error"},{"inputs":[],"name":"InvalidBips","type":"error"},{"inputs":[{"internalType":"uint256","name":"commandType","type":"uint256"}],"name":"InvalidCommandType","type":"error"},{"inputs":[],"name":"InvalidOwnerERC1155","type":"error"},{"inputs":[],"name":"InvalidOwnerERC721","type":"error"},{"inputs":[],"name":"InvalidSpender","type":"error"},{"inputs":[],"name":"SliceOutOfBounds","type":"error"},{"inputs":[],"name":"UnsafeCast","type":"error"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"commands","type":"bytes"},{"internalType":"bytes[]","name":"inputs","type":"bytes[]"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLSwapCallback(int256,int256,bytes)":"11c17848","execute(bytes,bytes[])":"24856bc3","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BalanceTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BuyPunkFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidAmountOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLTooLittleReceived\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLTooMuchRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicInvalidPath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicTooLittleReceived\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicTooMuchRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FromAddressIsNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAMB\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBips\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commandType\",\"type\":\"uint256\"}],\"name\":\"InvalidCommandType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOwnerERC1155\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOwnerERC721\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SliceOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeCast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"commands\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"inputs\",\"type\":\"bytes[]\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}},\"execute(bytes,bytes[])\":{\"params\":{\"commands\":\"A set of concatenated commands, each 1 byte in length\",\"inputs\":\"An array of byte strings containing abi encoded inputs for each command\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"Decodes and Executes Commands\",\"version\":1},\"userdoc\":{\"errors\":{\"UnsafeCast()\":[{\"notice\":\"Thrown when a valude greater than type(uint160).max is cast to uint160\"}]},\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"},\"execute(bytes,bytes[])\":{\"notice\":\"Executes encoded commands along with provided inputs.\"}},\"notice\":\"Called by the UniversalRouter contract to efficiently decode and execute a singular command\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/Dispatcher.sol\":\"Dispatcher\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/base/Callbacks.sol\":{\"keccak256\":\"0x4c097b77964ea0a23f25b1f2c46165854f90cdff9f9d192ccb61ecb09911556a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9b77f5b4c22a777475b57856e96498defef9c8c6656a91c8a6d6fd7b0199f748\",\"dweb:/ipfs/Qmehq1yzubWxCwGcewxLEtRhDtAiczsvbMyNE2mMm4hLRU\"]},\"contracts/base/Dispatcher.sol\":{\"keccak256\":\"0xaef76728e3dfdd285a6ee4bbd1ee25af917e5bc5d7b9d7344fc90ffd6b5b9f66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ccef565df719b72cc334dc90769beef9bc268c71eb1c888e57a2dcfbf50e7bc\",\"dweb:/ipfs/Qmf7Ki5JKG3QA5cs7T6egQw2PiE35FYVuL82R9fvCe15jC\"]},\"contracts/base/LockAndMsgSender.sol\":{\"keccak256\":\"0x6f816683f08585270627953efeb3a30e59c1353b9012430975e992e7132a9446\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3b9cbd8e0757a046722fdb22c59727b974410943b51027b070e79640628efe4\",\"dweb:/ipfs/QmXNTi5j5au1UQQzfWUqmejFPEsrxcmyS24dS8KJWzaJfX\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/external/ICryptoPunksMarket.sol\":{\"keccak256\":\"0x9957ab4197ffa82f9d068e96cfe9a46f2398b9388531dec8622cd3c45c02f95c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://495c05543031c6b310127f971040a1c65d786f9e3842843ba54d390f51e54ea0\",\"dweb:/ipfs/QmV3hT4aDPZtVrVRBLXWV1P6aRFQMBbgGE2hsn84P4CLfJ\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Commands.sol\":{\"keccak256\":\"0x746a70c0150d4ee20fcc2c88309a6862776126ef62571e58b221d06829eb4059\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f47d1b6317a0ba3a82bd44a818d6f71b771452122980fd562c543c18acb458b9\",\"dweb:/ipfs/QmS28g4jDqjG38bpAV7U5nT4ZcWs7hgcu8rdbYmWvcNMpc\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/Payments.sol\":{\"keccak256\":\"0xe8df3a7f09cf90068f23ebb7020b3464f564acc432165ac8a8d6e3ab89d2cf52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d0af26f1bf6a7d46fc5d4c07172aec8a3776f221e120c2f9e5bbb9519c891e79\",\"dweb:/ipfs/QmQWeaLQYwyy39DUnA2dTqUQYh6pHDZYmQtnGR21h4Rag9\"]},\"contracts/modules/Permit2Payments.sol\":{\"keccak256\":\"0xdf94a5fa420ead1b4287c3d6b0458cb5fd2da25d6914a34a40b8c0a421d34bd8\",\"urls\":[\"bzz-raw://7d6ba73c1b900b6a054a041555c9579b4e2e3b78d43b677fd556abe9141debc8\",\"dweb:/ipfs/QmS4Y8yk4k6bvackyLmRuqUMh4FhRa7MMA26FnsNZ57vAg\"]},\"contracts/modules/astra/cl/BytesLib.sol\":{\"keccak256\":\"0x37cc4ff61caf36538fe9354d4613e79add52f09449aff50e2b6ad122c6e4b426\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e538b26099c2dba25055409491f0876f19f87a939b53c6556b92796d33fa2fd\",\"dweb:/ipfs/QmVs4iUfgxWoXrmN2HTtcMU1SMi8FThceoKnGxkyUHYEpq\"]},\"contracts/modules/astra/cl/CLPath.sol\":{\"keccak256\":\"0xb516717967d5d422a307b2ff61eb4e20711bfaf751dad9ece9e482b275f47bf1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e1596db3a1b3cac83d7aa590ebbf6b2054a0488bb4945b223f63ac2de51e0ec\",\"dweb:/ipfs/QmZVRozX6KTmwLAwe9DY75S3Cr47vKnsmdibXQELrzo9aF\"]},\"contracts/modules/astra/cl/CLSwapRouter.sol\":{\"keccak256\":\"0x84da24fe3d63af99dbc9f38a6d9f94f80ea2df108f9d1ae945c4a7d2140cedfc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7c7125c913ccdea969643316e5bcbda9e61a2d4d56c51ba927f9608648846f26\",\"dweb:/ipfs/QmVhCqRGCoGJpHzw3e6EjWFbFAuZ8vMr8PcUdQq9wbmcFo\"]},\"contracts/modules/astra/classic/AstraClassicLibrary.sol\":{\"keccak256\":\"0x6956745d167ccf501aa7840cc05ed933c954c3a9689b3a976b94579d403983cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6e0159b0431df94021a767493b402ecc3082faf41a03c8a0456ef2160590979\",\"dweb:/ipfs/QmWQ2GkkdyuFz5veyykxxCAa4LbRLMBd61fnMJaSdee1BJ\"]},\"contracts/modules/astra/classic/ClassicSwapRouter.sol\":{\"keccak256\":\"0x5425292304e4129f6d7ed68dafd55c5d3f7251ed17517c38ef798251a426cb33\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5046786ab9f70b7fb930560bc9ea16f2181fab07eeb6be97a8bc85c632d2166b\",\"dweb:/ipfs/QmPc8PajkQaLRYNSckaSAaLyYETddpRvJWxbD9PhcLmwES\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/libraries/SafeCast160.sol\":{\"keccak256\":\"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7\",\"dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi\"]},\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/base/LockAndMsgSender.sol":{"LockAndMsgSender":{"abi":[{"inputs":[],"name":"ContractLocked","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234602657600080546001600160a01b031916600117905560119081602c8239f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x26 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x11 SWAP1 DUP2 PUSH1 0x2C DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"126:951:17:-:0;;;;;;;275:15;231:10;;-1:-1:-1;;;;;;231:10:17;239:1;231:10;;;126:951;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"126:951:17:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ContractLocked\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/LockAndMsgSender.sol\":\"LockAndMsgSender\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/base/LockAndMsgSender.sol\":{\"keccak256\":\"0x6f816683f08585270627953efeb3a30e59c1353b9012430975e992e7132a9446\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3b9cbd8e0757a046722fdb22c59727b974410943b51027b070e79640628efe4\",\"dweb:/ipfs/QmXNTi5j5au1UQQzfWUqmejFPEsrxcmyS24dS8KJWzaJfX\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]}},\"version\":1}"}},"contracts/base/RewardsCollector.sol":{"RewardsCollector":{"abi":[{"inputs":[],"name":"UnableToClaim","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsSent","type":"event"},{"inputs":[{"internalType":"bytes","name":"looksRareClaim","type":"bytes"}],"name":"collectRewards","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectRewards(bytes)":"709a1cc2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnableToClaim\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsSent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"looksRareClaim\",\"type\":\"bytes\"}],\"name\":\"collectRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectRewards(bytes)\":{\"params\":{\"looksRareClaim\":\"The data required by LooksRare to claim reward tokens\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectRewards(bytes)\":{\"notice\":\"Fetches users' LooksRare rewards and sends them to the distributor contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/RewardsCollector.sol\":\"RewardsCollector\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/base/RewardsCollector.sol\":{\"keccak256\":\"0x9554b98222c6551eae14570a84cf7f535ca9601ee3d53cfd9d900acfd67fcd92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b2a90f38ddf372a34c4243021f2ffc8ace0d684d4f4951bc092a1b38909544a1\",\"dweb:/ipfs/QmRCj4cof2U6hm4JHTuQdSCgAKM34hHQfBVKMtdxaBBMCk\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/IRewardsCollector.sol\":{\"keccak256\":\"0x394a3c99a6ef18c0de171e85f8c6352eb3f6f1c5165fe9a2fdc4db181dd407b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9937d3b2df12264789f3bbf053a0b044b3d21c86c39dac4757a9a40bae6185c0\",\"dweb:/ipfs/QmayA3uwk1wXCA8K1R5HrnszaPL9ymUSDwyWxmbtv2ujXP\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/base/RouterImmutables.sol":{"RouterImmutables":{"abi":[{"inputs":[{"components":[{"internalType":"address","name":"permit2","type":"address"},{"internalType":"address","name":"samb","type":"address"},{"internalType":"address","name":"seaportV1_5","type":"address"},{"internalType":"address","name":"seaportV1_4","type":"address"},{"internalType":"address","name":"openseaConduit","type":"address"},{"internalType":"address","name":"nftxZap","type":"address"},{"internalType":"address","name":"x2y2","type":"address"},{"internalType":"address","name":"foundation","type":"address"},{"internalType":"address","name":"sudoswap","type":"address"},{"internalType":"address","name":"elementMarket","type":"address"},{"internalType":"address","name":"nft20Zap","type":"address"},{"internalType":"address","name":"cryptopunks","type":"address"},{"internalType":"address","name":"looksRareV2","type":"address"},{"internalType":"address","name":"routerRewardsDistributor","type":"address"},{"internalType":"address","name":"looksRareRewardsDistributor","type":"address"},{"internalType":"address","name":"looksRareToken","type":"address"},{"internalType":"address","name":"classicFactory","type":"address"},{"internalType":"address","name":"clFactory","type":"address"},{"internalType":"bytes32","name":"pairInitCodeHash","type":"bytes32"},{"internalType":"bytes32","name":"poolInitCodeHash","type":"bytes32"}],"internalType":"struct RouterParameters","name":"params","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":805,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"34610320576001600160401b0361034b38819003610300601f8201601f19168101908482119082101761030a5761028092829160405261030039126103205760405161028081019182118183101761030a5761026091604052610063610300610325565b808252610071610320610325565b6020830152610081610340610325565b6040830152610091610360610325565b60608301526100a1610380610325565b60808301526100b16103a0610325565b60a08301526100c16103c0610325565b60c08301526100d16103e0610325565b60e08301526100e1610400610325565b6101008301526100f2610420610325565b610120830152610103610440610325565b610140830152610114610460610325565b610160830152610125610480610325565b6101808301526101366104a0610325565b6101a08301526101476104c0610325565b6101c08301526101586104e0610325565b6101e0830152610169610500610325565b61020083015261017a610520610325565b610220838101918252610540516102408086019182526103008701518787019081526001600160a01b0395861660a09081526020880151871660809081526040808a0151891660c090815260608b01518a1660e0908152928b01518a16610100908152938b01518a16610120908152908b01518a16610140908152928b01518a16610160908152938b01518a16610180908152908b01518a166101a0908152928b01518a166101c0908152938b01518a166101e0908152908b01518a16610200908152908b01518a16909752918901518816909352918701518616909752919094015183166102805292516102a05251166102c05290516102e05251601161033a823960805181505060a05181505060c05181505060e05181505061010051815050610120518150506101405181505061016051815050610180518150506101a0518150506101c0518150506101e05181505061020051815050610220518150506102405181505061026051815050610280518150506102a0518150506102c0518150506102e051815050601190f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b51906001600160a01b03821682036103205756fe600080fdfea164736f6c6343000811000a","opcodes":"CALLVALUE PUSH2 0x320 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH2 0x34B CODESIZE DUP2 SWAP1 SUB PUSH2 0x300 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 DUP5 DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x30A JUMPI PUSH2 0x280 SWAP3 DUP3 SWAP2 PUSH1 0x40 MSTORE PUSH2 0x300 CODECOPY SLT PUSH2 0x320 JUMPI PUSH1 0x40 MLOAD PUSH2 0x280 DUP2 ADD SWAP2 DUP3 GT DUP2 DUP4 LT OR PUSH2 0x30A JUMPI PUSH2 0x260 SWAP2 PUSH1 0x40 MSTORE PUSH2 0x63 PUSH2 0x300 PUSH2 0x325 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH2 0x71 PUSH2 0x320 PUSH2 0x325 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x81 PUSH2 0x340 PUSH2 0x325 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x91 PUSH2 0x360 PUSH2 0x325 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xA1 PUSH2 0x380 PUSH2 0x325 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0xB1 PUSH2 0x3A0 PUSH2 0x325 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xC1 PUSH2 0x3C0 PUSH2 0x325 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0xD1 PUSH2 0x3E0 PUSH2 0x325 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0xE1 PUSH2 0x400 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0xF2 PUSH2 0x420 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x103 PUSH2 0x440 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x114 PUSH2 0x460 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE PUSH2 0x125 PUSH2 0x480 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x180 DUP4 ADD MSTORE PUSH2 0x136 PUSH2 0x4A0 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x147 PUSH2 0x4C0 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x1C0 DUP4 ADD MSTORE PUSH2 0x158 PUSH2 0x4E0 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x169 PUSH2 0x500 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x200 DUP4 ADD MSTORE PUSH2 0x17A PUSH2 0x520 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x220 DUP4 DUP2 ADD SWAP2 DUP3 MSTORE PUSH2 0x540 MLOAD PUSH2 0x240 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE PUSH2 0x300 DUP8 ADD MLOAD DUP8 DUP8 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP9 ADD MLOAD DUP8 AND PUSH1 0x80 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP11 ADD MLOAD DUP10 AND PUSH1 0xC0 SWAP1 DUP2 MSTORE PUSH1 0x60 DUP12 ADD MLOAD DUP11 AND PUSH1 0xE0 SWAP1 DUP2 MSTORE SWAP3 DUP12 ADD MLOAD DUP11 AND PUSH2 0x100 SWAP1 DUP2 MSTORE SWAP4 DUP12 ADD MLOAD DUP11 AND PUSH2 0x120 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND PUSH2 0x140 SWAP1 DUP2 MSTORE SWAP3 DUP12 ADD MLOAD DUP11 AND PUSH2 0x160 SWAP1 DUP2 MSTORE SWAP4 DUP12 ADD MLOAD DUP11 AND PUSH2 0x180 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND PUSH2 0x1A0 SWAP1 DUP2 MSTORE SWAP3 DUP12 ADD MLOAD DUP11 AND PUSH2 0x1C0 SWAP1 DUP2 MSTORE SWAP4 DUP12 ADD MLOAD DUP11 AND PUSH2 0x1E0 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND PUSH2 0x200 SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD MLOAD DUP11 AND SWAP1 SWAP8 MSTORE SWAP2 DUP10 ADD MLOAD DUP9 AND SWAP1 SWAP4 MSTORE SWAP2 DUP8 ADD MLOAD DUP7 AND SWAP1 SWAP8 MSTORE SWAP2 SWAP1 SWAP5 ADD MLOAD DUP4 AND PUSH2 0x280 MSTORE SWAP3 MLOAD PUSH2 0x2A0 MSTORE MLOAD AND PUSH2 0x2C0 MSTORE SWAP1 MLOAD PUSH2 0x2E0 MSTORE MLOAD PUSH1 0x11 PUSH2 0x33A DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 POP POP PUSH1 0xA0 MLOAD DUP2 POP POP PUSH1 0xC0 MLOAD DUP2 POP POP PUSH1 0xE0 MLOAD DUP2 POP POP PUSH2 0x100 MLOAD DUP2 POP POP PUSH2 0x120 MLOAD DUP2 POP POP PUSH2 0x140 MLOAD DUP2 POP POP PUSH2 0x160 MLOAD DUP2 POP POP PUSH2 0x180 MLOAD DUP2 POP POP PUSH2 0x1A0 MLOAD DUP2 POP POP PUSH2 0x1C0 MLOAD DUP2 POP POP PUSH2 0x1E0 MLOAD DUP2 POP POP PUSH2 0x200 MLOAD DUP2 POP POP PUSH2 0x220 MLOAD DUP2 POP POP PUSH2 0x240 MLOAD DUP2 POP POP PUSH2 0x260 MLOAD DUP2 POP POP PUSH2 0x280 MLOAD DUP2 POP POP PUSH2 0x2A0 MLOAD DUP2 POP POP PUSH2 0x2C0 MLOAD DUP2 POP POP PUSH2 0x2E0 MLOAD DUP2 POP POP PUSH1 0x11 SWAP1 RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x320 JUMPI JUMP INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"948:3016:19:-:0;;;-1:-1:-1;;;;;948:3016:19;;;;;;;;;-1:-1:-1;;948:3016:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;948:3016:19;;;;2995:44;;;948:3016;;;;;;;3049:25;;;948:3016;;;;;;;;3084:33;;;948:3016;;;;;;;3127:33;;;948:3016;;;;;;;3170:39;;;948:3016;;;;;;;3219:25;;;948:3016;;;;;;;3254:18;;;948:3016;;;;;;;3282:30;;;948:3016;;;;;;;3322:26;;;948:3016;;;;;;;3358:37;;;948:3016;;;;;;;3405:27;;;948:3016;;;;;;;3442:32;;;948:3016;;;;;;;3484:34;;;948:3016;;;;;;3528:47;;;948:3016;;;;;;3585:67;;;948:3016;;;;;;3662:60;;;948:3016;;;;;;;;3732:45;948:3016;;3787:59;;948:3016;;3856:35;;948:3016;;3901:54;;948:3016;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3787:59;948:3016;;;;3856:35;948:3016;;;;3901:54;948:3016;;;;;;;;;;;-1:-1:-1;948:3016:19;;;;;-1:-1:-1;948:3016:19;;-1:-1:-1;948:3016:19;;;;;-1:-1:-1;;;;;948:3016:19;;;;;;:::o"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"948:3016:19:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"samb\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seaportV1_5\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seaportV1_4\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"openseaConduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nftxZap\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"x2y2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"foundation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sudoswap\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"elementMarket\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nft20Zap\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cryptopunks\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"looksRareV2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"routerRewardsDistributor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"looksRareRewardsDistributor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"looksRareToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"classicFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"clFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"pairInitCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"poolInitCodeHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct RouterParameters\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ASTRA_CLASSIC_FACTORY\":{\"details\":\"The address of AstraFactory\"},\"ASTRA_CLASSIC_PAIR_INIT_CODE_HASH\":{\"details\":\"The AstraPair initcodehash\"},\"ASTRA_CL_FACTORY\":{\"details\":\"The address of AstraCLFactory\"},\"ASTRA_CL_POOL_INIT_CODE_HASH\":{\"details\":\"The AstraCLPool initcodehash\"},\"LOOKS_RARE_REWARDS_DISTRIBUTOR\":{\"details\":\"The address of LooksRare rewards distributor\"},\"LOOKS_RARE_TOKEN\":{\"details\":\"The address of LooksRare token\"},\"LOOKS_RARE_V2\":{\"details\":\"The address of LooksRareV2\"},\"NFTX_ZAP\":{\"details\":\"The address of NFTX zap contract for interfacing with vaults\"},\"OPENSEA_CONDUIT\":{\"details\":\"The address of OpenSea's conduit used in both Seaport 1.4 and Seaport 1.5\"},\"PERMIT2\":{\"details\":\"Permit2 address\"},\"ROUTER_REWARDS_DISTRIBUTOR\":{\"details\":\"The address of router rewards distributor\"},\"SAMB\":{\"details\":\"SAMB address\"},\"SEAPORT_V1_4\":{\"details\":\"Seaport 1.4 address\"},\"SEAPORT_V1_5\":{\"details\":\"Seaport 1.5 address\"},\"X2Y2\":{\"details\":\"The address of X2Y2\"}},\"title\":\"Router Immutable Storage contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Used along with the `RouterParameters` struct for ease of cross-chain deployment\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/RouterImmutables.sol\":\"RouterImmutables\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}"}},"contracts/deploy/UnsupportedProtocol.sol":{"UnsupportedProtocol":{"abi":[{"inputs":[],"name":"UnsupportedProtocolError","type":"error"},{"stateMutability":"nonpayable","type":"fallback"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608080604052346013576043908160198239f35b600080fdfe60808060405234603157807fea3559ef0000000000000000000000000000000000000000000000000000000060049252fd5b600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x13 JUMPI PUSH1 0x43 SWAP1 DUP2 PUSH1 0x19 DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x31 JUMPI DUP1 PUSH32 0xEA3559EF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"230:146:20:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405234603157807fea3559ef0000000000000000000000000000000000000000000000000000000060049252fd5b600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x31 JUMPI DUP1 PUSH32 0xEA3559EF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"230:146:20:-:0;;;;;;;341:26;;;;;;230:146;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnsupportedProtocolError\",\"type\":\"error\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Dummy contract that always reverts\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Used as a placeholder to ensure reverts on attempted calls to protocols unsupported on a given chain\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/deploy/UnsupportedProtocol.sol\":\"UnsupportedProtocol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/deploy/UnsupportedProtocol.sol\":{\"keccak256\":\"0xe52eacb43bf0ce976999c9bb6b994317336ece52e33ed8691e797294d7ec8025\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eea9226732045ac763cc701c547ce6a7be6dc444a826816f25072a1254fb0e2e\",\"dweb:/ipfs/QmcMndSdSjc42Sox4rnkDaLtAPtTFfMhjHJQZjbM95H1j8\"]}},\"version\":1}"}},"contracts/interfaces/IRewardsCollector.sol":{"IRewardsCollector":{"abi":[{"inputs":[{"internalType":"bytes","name":"looksRareClaim","type":"bytes"}],"name":"collectRewards","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectRewards(bytes)":"709a1cc2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"looksRareClaim\",\"type\":\"bytes\"}],\"name\":\"collectRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectRewards(bytes)\":{\"params\":{\"looksRareClaim\":\"The data required by LooksRare to claim reward tokens\"}}},\"title\":\"LooksRare Rewards Collector\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectRewards(bytes)\":{\"notice\":\"Fetches users' LooksRare rewards and sends them to the distributor contract\"}},\"notice\":\"Implements a permissionless call to fetch LooksRare rewards earned by Universal Router users and transfers them to an external rewards distributor contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IRewardsCollector.sol\":\"IRewardsCollector\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IRewardsCollector.sol\":{\"keccak256\":\"0x394a3c99a6ef18c0de171e85f8c6352eb3f6f1c5165fe9a2fdc4db181dd407b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9937d3b2df12264789f3bbf053a0b044b3d21c86c39dac4757a9a40bae6185c0\",\"dweb:/ipfs/QmayA3uwk1wXCA8K1R5HrnszaPL9ymUSDwyWxmbtv2ujXP\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}"}},"contracts/interfaces/IUniversalRouter.sol":{"IUniversalRouter":{"abi":[{"inputs":[],"name":"AMBNotAccepted","type":"error"},{"inputs":[{"internalType":"uint256","name":"commandIndex","type":"uint256"},{"internalType":"bytes","name":"message","type":"bytes"}],"name":"ExecutionFailed","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[],"name":"TransactionDeadlinePassed","type":"error"},{"inputs":[{"internalType":"bytes","name":"looksRareClaim","type":"bytes"}],"name":"collectRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"commands","type":"bytes"},{"internalType":"bytes[]","name":"inputs","type":"bytes[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectRewards(bytes)":"709a1cc2","execute(bytes,bytes[],uint256)":"3593564c","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AMBNotAccepted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commandIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionDeadlinePassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"looksRareClaim\",\"type\":\"bytes\"}],\"name\":\"collectRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"commands\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"inputs\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectRewards(bytes)\":{\"params\":{\"looksRareClaim\":\"The data required by LooksRare to claim reward tokens\"}},\"execute(bytes,bytes[],uint256)\":{\"params\":{\"commands\":\"A set of concatenated commands, each 1 byte in length\",\"deadline\":\"The deadline by which the transaction must be executed\",\"inputs\":\"An array of byte strings containing abi encoded inputs for each command\"}},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"AMBNotAccepted()\":[{\"notice\":\"Thrown when attempting to send AMB directly to the contract\"}],\"ExecutionFailed(uint256,bytes)\":[{\"notice\":\"Thrown when a required command has failed\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when attempting to execute commands and an incorrect number of inputs are provided\"}],\"TransactionDeadlinePassed()\":[{\"notice\":\"Thrown when executing commands with an expired deadline\"}]},\"kind\":\"user\",\"methods\":{\"collectRewards(bytes)\":{\"notice\":\"Fetches users' LooksRare rewards and sends them to the distributor contract\"},\"execute(bytes,bytes[],uint256)\":{\"notice\":\"Executes encoded commands along with provided inputs. Reverts if deadline has expired.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IUniversalRouter.sol\":\"IUniversalRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/interfaces/IRewardsCollector.sol\":{\"keccak256\":\"0x394a3c99a6ef18c0de171e85f8c6352eb3f6f1c5165fe9a2fdc4db181dd407b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9937d3b2df12264789f3bbf053a0b044b3d21c86c39dac4757a9a40bae6185c0\",\"dweb:/ipfs/QmayA3uwk1wXCA8K1R5HrnszaPL9ymUSDwyWxmbtv2ujXP\"]},\"contracts/interfaces/IUniversalRouter.sol\":{\"keccak256\":\"0xf6b28f199374750d5475fce9d91e0c0dfb53b79e9cb450e50302353958503197\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4f792c05120a47d714ba54996373bf9b0194aeebefb3dae47b72f23518b92d5e\",\"dweb:/ipfs/QmPQAdm2br7S54wr7hbqSpbWPPf5jDxutCmT7nqBqoJXxX\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}"}},"contracts/interfaces/external/ICryptoPunksMarket.sol":{"ICryptoPunksMarket":{"abi":[{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"}],"name":"buyPunk","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"punkIndex","type":"uint256"}],"name":"transferPunk","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"buyPunk(uint256)":"8264fe98","transferPunk(address,uint256)":"8b72a2ec"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"punkIndex\",\"type\":\"uint256\"}],\"name\":\"buyPunk\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"punkIndex\",\"type\":\"uint256\"}],\"name\":\"transferPunk\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Interface for CryptoPunksMarket\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyPunk(uint256)\":{\"notice\":\"Buy a cryptopunk\"},\"transferPunk(address,uint256)\":{\"notice\":\"Transfer a cryptopunk to another address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/external/ICryptoPunksMarket.sol\":\"ICryptoPunksMarket\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/external/ICryptoPunksMarket.sol\":{\"keccak256\":\"0x9957ab4197ffa82f9d068e96cfe9a46f2398b9388531dec8622cd3c45c02f95c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://495c05543031c6b310127f971040a1c65d786f9e3842843ba54d390f51e54ea0\",\"dweb:/ipfs/QmV3hT4aDPZtVrVRBLXWV1P6aRFQMBbgGE2hsn84P4CLfJ\"]}},\"version\":1}"}},"contracts/interfaces/external/ISAMB.sol":{"ISAMB":{"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":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","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":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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 `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` 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.\"}},\"title\":\"Interface for WETH9\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit()\":{\"notice\":\"Deposit ether to get wrapped ether\"},\"withdraw(uint256)\":{\"notice\":\"Withdraw wrapped ether to get ether\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/external/ISAMB.sol\":\"ISAMB\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]}},\"version\":1}"}},"contracts/libraries/Commands.sol":{"Commands":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"141:3039:25:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"141:3039:25:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Commands\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Command Flags used to decode commands\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/Commands.sol\":\"Commands\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libraries/Commands.sol\":{\"keccak256\":\"0x746a70c0150d4ee20fcc2c88309a6862776126ef62571e58b221d06829eb4059\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f47d1b6317a0ba3a82bd44a818d6f71b771452122980fd562c543c18acb458b9\",\"dweb:/ipfs/QmS28g4jDqjG38bpAV7U5nT4ZcWs7hgcu8rdbYmWvcNMpc\"]}},\"version\":1}"}},"contracts/libraries/Constants.sol":{"Constants":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"210:1639:26:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"210:1639:26:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADDRESS_THIS\":{\"details\":\"Used as a flag for identifying address(this) should be used, saves gas by sending more 0 bytes\"},\"ADDR_SIZE\":{\"details\":\"The length of the bytes encoded address\"},\"ALREADY_PAID\":{\"details\":\"Used for identifying cases when a classic pair has already received input tokens\"},\"AMB\":{\"details\":\"Used as a flag for identifying the transfer of AMB instead of a token\"},\"CL_FEE_SIZE\":{\"details\":\"The length of the bytes encoded fee\"},\"CL_POP_OFFSET\":{\"details\":\"The offset of an encoded pool key Token (20) + Fee (3) + Token (20) = 43\"},\"CONTRACT_BALANCE\":{\"details\":\"Used for identifying cases when this contract's balance of a token is to be used as an input This value is equivalent to 1<<255, i.e. a singular 1 in the most significant bit.\"},\"MSG_SENDER\":{\"details\":\"Used as a flag for identifying that msg.sender should be used, saves gas by sending more 0 bytes\"},\"MULTIPLE_CL_POOLS_MIN_LENGTH\":{\"details\":\"The minimum length of an encoding that contains 2 or more pools\"},\"NEXT_CL_POOL_OFFSET\":{\"details\":\"The offset of a single token address (20) and pool fee (3)\"}},\"title\":\"Constant state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Constant state used by the Universal Router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/Constants.sol\":\"Constants\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]}},\"version\":1}"}},"contracts/modules/Payments.sol":{"Payments":{"abi":[{"inputs":[],"name":"InsufficientAMB","type":"error"},{"inputs":[],"name":"InsufficientToken","type":"error"},{"inputs":[],"name":"InvalidBips","type":"error"},{"inputs":[],"name":"InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InsufficientAMB\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBips\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Payments contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Performs various operations around the payment of ETH and tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/modules/Payments.sol\":\"Payments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/Payments.sol\":{\"keccak256\":\"0xe8df3a7f09cf90068f23ebb7020b3464f564acc432165ac8a8d6e3ab89d2cf52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d0af26f1bf6a7d46fc5d4c07172aec8a3776f221e120c2f9e5bbb9519c891e79\",\"dweb:/ipfs/QmQWeaLQYwyy39DUnA2dTqUQYh6pHDZYmQtnGR21h4Rag9\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/modules/Permit2Payments.sol":{"Permit2Payments":{"abi":[{"inputs":[],"name":"FromAddressIsNotOwner","type":"error"},{"inputs":[],"name":"InsufficientAMB","type":"error"},{"inputs":[],"name":"InsufficientToken","type":"error"},{"inputs":[],"name":"InvalidBips","type":"error"},{"inputs":[],"name":"InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FromAddressIsNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAMB\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBips\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Payments through Permit2\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Performs interactions with Permit2 to transfer tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/modules/Permit2Payments.sol\":\"Permit2Payments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/Payments.sol\":{\"keccak256\":\"0xe8df3a7f09cf90068f23ebb7020b3464f564acc432165ac8a8d6e3ab89d2cf52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d0af26f1bf6a7d46fc5d4c07172aec8a3776f221e120c2f9e5bbb9519c891e79\",\"dweb:/ipfs/QmQWeaLQYwyy39DUnA2dTqUQYh6pHDZYmQtnGR21h4Rag9\"]},\"contracts/modules/Permit2Payments.sol\":{\"keccak256\":\"0xdf94a5fa420ead1b4287c3d6b0458cb5fd2da25d6914a34a40b8c0a421d34bd8\",\"urls\":[\"bzz-raw://7d6ba73c1b900b6a054a041555c9579b4e2e3b78d43b677fd556abe9141debc8\",\"dweb:/ipfs/QmS4Y8yk4k6bvackyLmRuqUMh4FhRa7MMA26FnsNZ57vAg\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/libraries/SafeCast160.sol\":{\"keccak256\":\"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7\",\"dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi\"]},\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/modules/astra/cl/BytesLib.sol":{"BytesLib":{"abi":[{"inputs":[],"name":"SliceOutOfBounds","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"174:3939:29:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"174:3939:29:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SliceOutOfBounds\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/modules/astra/cl/BytesLib.sol\":\"BytesLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/astra/cl/BytesLib.sol\":{\"keccak256\":\"0x37cc4ff61caf36538fe9354d4613e79add52f09449aff50e2b6ad122c6e4b426\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e538b26099c2dba25055409491f0876f19f87a939b53c6556b92796d33fa2fd\",\"dweb:/ipfs/QmVs4iUfgxWoXrmN2HTtcMU1SMi8FThceoKnGxkyUHYEpq\"]}},\"version\":1}"}},"contracts/modules/astra/cl/CLPath.sol":{"CLPath":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"240:1504:30:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"240:1504:30:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Functions for manipulating path data for multihop swaps\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/modules/astra/cl/CLPath.sol\":\"CLPath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/astra/cl/BytesLib.sol\":{\"keccak256\":\"0x37cc4ff61caf36538fe9354d4613e79add52f09449aff50e2b6ad122c6e4b426\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e538b26099c2dba25055409491f0876f19f87a939b53c6556b92796d33fa2fd\",\"dweb:/ipfs/QmVs4iUfgxWoXrmN2HTtcMU1SMi8FThceoKnGxkyUHYEpq\"]},\"contracts/modules/astra/cl/CLPath.sol\":{\"keccak256\":\"0xb516717967d5d422a307b2ff61eb4e20711bfaf751dad9ece9e482b275f47bf1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e1596db3a1b3cac83d7aa590ebbf6b2054a0488bb4945b223f63ac2de51e0ec\",\"dweb:/ipfs/QmZVRozX6KTmwLAwe9DY75S3Cr47vKnsmdibXQELrzo9aF\"]}},\"version\":1}"}},"contracts/modules/astra/cl/CLSwapRouter.sol":{"CLSwapRouter":{"abi":[{"inputs":[],"name":"CLInvalidAmountOut","type":"error"},{"inputs":[],"name":"CLInvalidCaller","type":"error"},{"inputs":[],"name":"CLInvalidSwap","type":"error"},{"inputs":[],"name":"CLTooLittleReceived","type":"error"},{"inputs":[],"name":"CLTooMuchRequested","type":"error"},{"inputs":[],"name":"FromAddressIsNotOwner","type":"error"},{"inputs":[],"name":"InsufficientAMB","type":"error"},{"inputs":[],"name":"InsufficientToken","type":"error"},{"inputs":[],"name":"InvalidBips","type":"error"},{"inputs":[],"name":"InvalidSpender","type":"error"},{"inputs":[],"name":"SliceOutOfBounds","type":"error"},{"inputs":[],"name":"UnsafeCast","type":"error"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLSwapCallback(int256,int256,bytes)":"11c17848"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CLInvalidAmountOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLInvalidSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLTooLittleReceived\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLTooMuchRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FromAddressIsNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAMB\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBips\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SliceOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeCast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}}},\"stateVariables\":{\"DEFAULT_MAX_AMOUNT_IN\":{\"details\":\"Used as the placeholder value for maxAmountIn, because the computed amount in for an exact output swap can never actually be this value\"},\"MAX_SQRT_RATIO\":{\"details\":\"The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\"},\"MIN_SQRT_RATIO\":{\"details\":\"The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\"},\"maxAmountInCached\":{\"details\":\"Transient storage variable used for checking slippage\"}},\"title\":\"Router for Astra CL Trades\",\"version\":1},\"userdoc\":{\"errors\":{\"UnsafeCast()\":[{\"notice\":\"Thrown when a valude greater than type(uint160).max is cast to uint160\"}]},\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/modules/astra/cl/CLSwapRouter.sol\":\"CLSwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/Payments.sol\":{\"keccak256\":\"0xe8df3a7f09cf90068f23ebb7020b3464f564acc432165ac8a8d6e3ab89d2cf52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d0af26f1bf6a7d46fc5d4c07172aec8a3776f221e120c2f9e5bbb9519c891e79\",\"dweb:/ipfs/QmQWeaLQYwyy39DUnA2dTqUQYh6pHDZYmQtnGR21h4Rag9\"]},\"contracts/modules/Permit2Payments.sol\":{\"keccak256\":\"0xdf94a5fa420ead1b4287c3d6b0458cb5fd2da25d6914a34a40b8c0a421d34bd8\",\"urls\":[\"bzz-raw://7d6ba73c1b900b6a054a041555c9579b4e2e3b78d43b677fd556abe9141debc8\",\"dweb:/ipfs/QmS4Y8yk4k6bvackyLmRuqUMh4FhRa7MMA26FnsNZ57vAg\"]},\"contracts/modules/astra/cl/BytesLib.sol\":{\"keccak256\":\"0x37cc4ff61caf36538fe9354d4613e79add52f09449aff50e2b6ad122c6e4b426\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e538b26099c2dba25055409491f0876f19f87a939b53c6556b92796d33fa2fd\",\"dweb:/ipfs/QmVs4iUfgxWoXrmN2HTtcMU1SMi8FThceoKnGxkyUHYEpq\"]},\"contracts/modules/astra/cl/CLPath.sol\":{\"keccak256\":\"0xb516717967d5d422a307b2ff61eb4e20711bfaf751dad9ece9e482b275f47bf1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e1596db3a1b3cac83d7aa590ebbf6b2054a0488bb4945b223f63ac2de51e0ec\",\"dweb:/ipfs/QmZVRozX6KTmwLAwe9DY75S3Cr47vKnsmdibXQELrzo9aF\"]},\"contracts/modules/astra/cl/CLSwapRouter.sol\":{\"keccak256\":\"0x84da24fe3d63af99dbc9f38a6d9f94f80ea2df108f9d1ae945c4a7d2140cedfc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7c7125c913ccdea969643316e5bcbda9e61a2d4d56c51ba927f9608648846f26\",\"dweb:/ipfs/QmVhCqRGCoGJpHzw3e6EjWFbFAuZ8vMr8PcUdQq9wbmcFo\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/libraries/SafeCast160.sol\":{\"keccak256\":\"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7\",\"dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi\"]},\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/modules/astra/classic/AstraClassicLibrary.sol":{"AstraClassicLibrary":{"abi":[{"inputs":[],"name":"InvalidPath","type":"error"},{"inputs":[],"name":"InvalidReserves","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"264:6321:32:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"264:6321:32:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidPath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReserves\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Astra Classic Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Calculates the recipient address for a command\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/modules/astra/classic/AstraClassicLibrary.sol\":\"AstraClassicLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/modules/astra/classic/AstraClassicLibrary.sol\":{\"keccak256\":\"0x6956745d167ccf501aa7840cc05ed933c954c3a9689b3a976b94579d403983cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6e0159b0431df94021a767493b402ecc3082faf41a03c8a0456ef2160590979\",\"dweb:/ipfs/QmWQ2GkkdyuFz5veyykxxCAa4LbRLMBd61fnMJaSdee1BJ\"]}},\"version\":1}"}},"contracts/modules/astra/classic/ClassicSwapRouter.sol":{"ClassicSwapRouter":{"abi":[{"inputs":[],"name":"ClassicInvalidPath","type":"error"},{"inputs":[],"name":"ClassicTooLittleReceived","type":"error"},{"inputs":[],"name":"ClassicTooMuchRequested","type":"error"},{"inputs":[],"name":"FromAddressIsNotOwner","type":"error"},{"inputs":[],"name":"InsufficientAMB","type":"error"},{"inputs":[],"name":"InsufficientToken","type":"error"},{"inputs":[],"name":"InvalidBips","type":"error"},{"inputs":[],"name":"InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ClassicInvalidPath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicTooLittleReceived\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClassicTooMuchRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FromAddressIsNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAMB\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBips\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Router for Astra Classic Trades\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/modules/astra/classic/ClassicSwapRouter.sol\":\"ClassicSwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@airdao/astra-contracts/contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"contracts/base/RouterImmutables.sol\":{\"keccak256\":\"0xb361b8e4e395888bcf162e180d0d777307a71c18ef51aec884097759a3c92892\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a47189eb70e683361ebfeee2ed4be40b4572104e946d76a9a6fe0e4f294bb33\",\"dweb:/ipfs/QmfDngQHkmQAWbgmUC5RSh844oYTxGEFxFSBgu94SBvDv4\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x6e0e765a784af56adfa9c3cb6beae308721c9c787cd53693ffd71c8f688944b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d107b31c0b5c85ac885b2b077fe8baedb8a09c08b048dfee4b56d9e27e4e2644\",\"dweb:/ipfs/QmPsHMVEKTSqiut2ZSoBg7U5rXyV3oM2fQwTjNeRsNMbcH\"]},\"contracts/libraries/Constants.sol\":{\"keccak256\":\"0x0a7430eff951a98a0668e1b19a35e96089dd4a15213b63d1be4db7c63f1cad01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64317f1f489ee873e1eab6ae2537e74303016a45c61feb833fbb826c322725e9\",\"dweb:/ipfs/QmRUyr9ehH7XWF68jwa4WYzR3R4ozsDkwUMzGhXjaRETJM\"]},\"contracts/modules/Payments.sol\":{\"keccak256\":\"0xe8df3a7f09cf90068f23ebb7020b3464f564acc432165ac8a8d6e3ab89d2cf52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d0af26f1bf6a7d46fc5d4c07172aec8a3776f221e120c2f9e5bbb9519c891e79\",\"dweb:/ipfs/QmQWeaLQYwyy39DUnA2dTqUQYh6pHDZYmQtnGR21h4Rag9\"]},\"contracts/modules/Permit2Payments.sol\":{\"keccak256\":\"0xdf94a5fa420ead1b4287c3d6b0458cb5fd2da25d6914a34a40b8c0a421d34bd8\",\"urls\":[\"bzz-raw://7d6ba73c1b900b6a054a041555c9579b4e2e3b78d43b677fd556abe9141debc8\",\"dweb:/ipfs/QmS4Y8yk4k6bvackyLmRuqUMh4FhRa7MMA26FnsNZ57vAg\"]},\"contracts/modules/astra/classic/AstraClassicLibrary.sol\":{\"keccak256\":\"0x6956745d167ccf501aa7840cc05ed933c954c3a9689b3a976b94579d403983cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6e0159b0431df94021a767493b402ecc3082faf41a03c8a0456ef2160590979\",\"dweb:/ipfs/QmWQ2GkkdyuFz5veyykxxCAa4LbRLMBd61fnMJaSdee1BJ\"]},\"contracts/modules/astra/classic/ClassicSwapRouter.sol\":{\"keccak256\":\"0x5425292304e4129f6d7ed68dafd55c5d3f7251ed17517c38ef798251a426cb33\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5046786ab9f70b7fb930560bc9ea16f2181fab07eeb6be97a8bc85c632d2166b\",\"dweb:/ipfs/QmPc8PajkQaLRYNSckaSAaLyYETddpRvJWxbD9PhcLmwES\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/libraries/SafeCast160.sol\":{\"keccak256\":\"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7\",\"dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi\"]},\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/test/ExampleModule.sol":{"ExampleModule":{"abi":[{"inputs":[],"name":"CauseRevert","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"ExampleModuleEvent","type":"event"},{"inputs":[],"name":"causeRevert","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"logEvent","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608080604052346100165761012c908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816367192b63146100c3575063a5fe08721461003757600080fd5b346100c057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100c0577ff173516ab337f2e7729ba9acd5771deab6be31f2ad8d5dd42dab5269e61701b9606060405160208152600960208201527f746573744576656e7400000000000000000000000000000000000000000000006040820152a180f35b80fd5b90503461011b57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011b57807f39492f340000000000000000000000000000000000000000000000000000000060049252fd5b5080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x16 JUMPI PUSH2 0x12C SWAP1 DUP2 PUSH2 0x1C DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x67192B63 EQ PUSH2 0xC3 JUMPI POP PUSH4 0xA5FE0872 EQ PUSH2 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC0 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xC0 JUMPI PUSH32 0xF173516AB337F2E7729BA9ACD5771DEAB6BE31F2AD8D5DD42DAB5269E61701B9 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x746573744576656E740000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE LOG1 DUP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x11B JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x11B JUMPI DUP1 PUSH32 0x39492F3400000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"71:262:34:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608080604052600436101561001357600080fd5b600090813560e01c90816367192b63146100c3575063a5fe08721461003757600080fd5b346100c057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100c0577ff173516ab337f2e7729ba9acd5771deab6be31f2ad8d5dd42dab5269e61701b9606060405160208152600960208201527f746573744576656e7400000000000000000000000000000000000000000000006040820152a180f35b80fd5b90503461011b57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011b57807f39492f340000000000000000000000000000000000000000000000000000000060049252fd5b5080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x67192B63 EQ PUSH2 0xC3 JUMPI POP PUSH4 0xA5FE0872 EQ PUSH2 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC0 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xC0 JUMPI PUSH32 0xF173516AB337F2E7729BA9ACD5771DEAB6BE31F2AD8D5DD42DAB5269E61701B9 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x746573744576656E740000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE LOG1 DUP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x11B JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x11B JUMPI DUP1 PUSH32 0x39492F3400000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"71:262:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;215:31;71:262;;;;;;;;;;;;;;;;215:31;71:262;;;;;;;;;;;;;;;;;;311:13;;71:262;311:13;;;71:262;;;"},"methodIdentifiers":{"causeRevert()":"67192b63","logEvent()":"a5fe0872"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CauseRevert\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ExampleModuleEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"causeRevert\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"logEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ExampleModule.sol\":\"ExampleModule\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/test/ExampleModule.sol\":{\"keccak256\":\"0x562fba9fdd209fb2ead144a1358d9f1c8a3366118073a4373a0803a59f5c4961\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ea135615c10f604c7c38c89cd09db2a0e2ada61db2da091d7641539446bc493\",\"dweb:/ipfs/QmNS5fRcZcPvnkXGyxzubz9pTtk6ufHiwme35qGdeexR1P\"]}},\"version\":1}"}},"contracts/test/ImportsForTypechain.sol":{"ImportsForTypechain":{"abi":[{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"AllowanceExpired","type":"error"},{"inputs":[],"name":"ExcessiveInvalidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidContractSignature","type":"error"},{"inputs":[],"name":"InvalidNonce","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSignatureLength","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[{"internalType":"uint256","name":"signatureDeadline","type":"uint256"}],"name":"SignatureExpired","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"Lockdown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint48","name":"newNonce","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"oldNonce","type":"uint48"}],"name":"NonceInvalidation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"nonce","type":"uint48"}],"name":"Permit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"word","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mask","type":"uint256"}],"name":"UnorderedNonceInvalidation","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint48","name":"newNonce","type":"uint48"}],"name":"invalidateNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wordPos","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"}],"name":"invalidateUnorderedNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"internalType":"struct IAllowanceTransfer.TokenSpenderPair[]","name":"approvals","type":"tuple[]"}],"name":"lockdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonceBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permitBatch","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct IAllowanceTransfer.AllowanceTransferDetails[]","name":"transferDetails","type":"tuple[]"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address,address)":"927da105","approve(address,address,uint160,uint48)":"87517c45","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","invalidateNonces(address,address,uint48)":"65d9723c","invalidateUnorderedNonces(uint256,uint256)":"3ff9dcb1","isApprovedForAll(address,address)":"e985e9c5","lockdown((address,address)[])":"cc53287f","nonceBitmap(address,uint256)":"4fe02b44","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"2a2d80d1","permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)":"30f28b7a","permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)":"edd9444b","permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)":"137c29fe","permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)":"fe8ec1a7","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom((address,address,uint160,address)[])":"0d58b1db","transferFrom(address,address,uint160,address)":"36c78516","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureDeadline\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"Lockdown\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"oldNonce\",\"type\":\"uint48\"}],\"name\":\"NonceInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"name\":\"Permit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"}],\"name\":\"invalidateNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wordPos\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"invalidateUnorderedNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.TokenSpenderPair[]\",\"name\":\"approvals\",\"type\":\"tuple[]\"}],\"name\":\"lockdown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonceBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.AllowanceTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}],\"InvalidAmount(uint256)\":[{\"params\":{\"maxAmount\":\"The maximum amount a spender can request to transfer\"}}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}],\"SignatureExpired(uint256)\":[{\"params\":{\"signatureDeadline\":\"The timestamp at which a signature is no longer valid\"}}]},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Uses cached version if chainid and address are unchanged from construction.\"},\"approve(address,address,uint160,uint48)\":{\"details\":\"The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval\",\"params\":{\"amount\":\"The approved amount of the token\",\"expiration\":\"The timestamp at which the approval is no longer valid\",\"spender\":\"The spender address to approve\",\"token\":\"The token to approve\"}},\"invalidateNonces(address,address,uint48)\":{\"details\":\"Can't invalidate more than 2**16 nonces per transaction.\",\"params\":{\"newNonce\":\"The new nonce to set. Invalidates all nonces less than it.\",\"spender\":\"The spender to invalidate nonces for\",\"token\":\"The token to invalidate nonces for\"}},\"invalidateUnorderedNonces(uint256,uint256)\":{\"details\":\"The wordPos is maxed at type(uint248).max\",\"params\":{\"mask\":\"A bitmap masked against msg.sender's current bitmap at the word position\",\"wordPos\":\"A number to index the nonceBitmap at\"}},\"lockdown((address,address)[])\":{\"params\":{\"approvals\":\"Array of approvals to revoke.\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitSingle\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitBatch\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"details\":\"Reverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\"}},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\"}},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definitionReverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"transferFrom((address,address,uint160,address)[])\":{\"details\":\"Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"transferDetails\":\"Array of owners, recipients, amounts, and tokens for the transfers\"}},\"transferFrom(address,address,uint160,address)\":{\"details\":\"Requires the from address to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"amount\":\"The amount of the token to transfer\",\"from\":\"The address to transfer from\",\"to\":\"The address of the recipient\",\"token\":\"The token address to transfer\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"ExcessiveInvalidation()\":[{\"notice\":\"Thrown when too many nonces are invalidated.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}],\"InvalidAmount(uint256)\":[{\"notice\":\"Thrown when the requested amount for a transfer is larger than the permissioned amount\"}],\"InvalidContractSignature()\":[{\"notice\":\"Thrown when the recovered contract signature is incorrect\"}],\"InvalidNonce()\":[{\"notice\":\"Thrown when validating that the inputted nonce has not been used\"}],\"InvalidSignature()\":[{\"notice\":\"Thrown when the recovered signer is equal to the zero address\"}],\"InvalidSignatureLength()\":[{\"notice\":\"Thrown when the passed in signature is not a valid length\"}],\"InvalidSigner()\":[{\"notice\":\"Thrown when the recovered signer does not equal the claimedSigner\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}],\"SignatureExpired(uint256)\":[{\"notice\":\"Thrown when validating an inputted signature that is stale\"}]},\"events\":{\"Approval(address,address,address,uint160,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions on a token for the spender.\"},\"Lockdown(address,address,address)\":{\"notice\":\"Emits an event when the owner sets the allowance back to 0 with the lockdown function.\"},\"NonceInvalidation(address,address,address,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully invalidates an ordered nonce.\"},\"Permit(address,address,address,uint160,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\"},\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"},\"allowance(address,address,address)\":{\"notice\":\"Maps users to tokens to spender addresses and information about the approval on the token\"},\"approve(address,address,uint160,uint48)\":{\"notice\":\"Approves the spender to use up to amount of the specified token up until the expiration\"},\"invalidateNonces(address,address,uint48)\":{\"notice\":\"Invalidate nonces for a given (token, spender) pair\"},\"invalidateUnorderedNonces(uint256,uint256)\":{\"notice\":\"Invalidates the bits specified in mask for the bitmap at the word position\"},\"lockdown((address,address)[])\":{\"notice\":\"Enables performing a \\\"lockdown\\\" of the sender's Permit2 identity by batch revoking approvals\"},\"nonceBitmap(address,uint256)\":{\"notice\":\"A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\"},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"notice\":\"Transfers a token using a signed permit message\"},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit message\"},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"notice\":\"Transfers a token using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"transferFrom((address,address,uint160,address)[])\":{\"notice\":\"Transfer approved tokens in a batch\"},\"transferFrom(address,address,uint160,address)\":{\"notice\":\"Transfer approved tokens from one address to another\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ImportsForTypechain.sol\":\"ImportsForTypechain\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/test/ImportsForTypechain.sol\":{\"keccak256\":\"0x6106fbba07fc310fc98617f6dfd9b7e463c0beec19f4626f8ae74505a5eb4f19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4c57866121eb7be03d91beded6fc8f4cbfc0a498a19aa9d82765bc16b670267\",\"dweb:/ipfs/QmcH1NWJBCD2bkxzJAgs8ZW6nRjDUjg347vaNSCn8xCgh1\"]},\"permit2/src/AllowanceTransfer.sol\":{\"keccak256\":\"0x83a47e7841f9d285eb7f0fd977fedb808640714cb9822a104bab99fe5cbb58ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f0de543f076f8556690f236dc431277acf9c91c04916a46040194b03ea9836\",\"dweb:/ipfs/QmQ5YLFHexR2WTNXDGu4y6WjRmLPzrdH92j7NDQzT8Jevp\"]},\"permit2/src/EIP712.sol\":{\"keccak256\":\"0x973d4358c262467a4c2a0c2867c676a8a138102968d8b89355c42f655d1a7a68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7219a31ace8c0a959392cc2ee06817c7c98dfc491e96d27f71a09fb23860b62c\",\"dweb:/ipfs/QmUGRLgddHZ3GoouEBoMYbRS4wVGapJrsD2nBxVwxLBibb\"]},\"permit2/src/Permit2.sol\":{\"keccak256\":\"0x934c0eb24a52eb5900f01f5c328374b670366adf995ba9ed49bcd3d7b87b159e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdfd05b3007726dc6dd2822c1dd9dc1b2471fbec507f30efa71a1a214c98bab6\",\"dweb:/ipfs/QmPq4hptCSUACQdynSa86bdEexE7RryzosrhUAZ9Xkqc5a\"]},\"permit2/src/PermitErrors.sol\":{\"keccak256\":\"0x9fd1192bbc3ffa9354f2bfc534d7a1cdf2be2c940c96ed4ac7bc37991e1e5dfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77f8b2e2c040c33e2c78f05e7e768a17f433c07adb699235c35c4dac92115070\",\"dweb:/ipfs/QmYX2VTyTm6QLtgp54kCrkAGY8uPxkx28urwLNEJsxTHJs\"]},\"permit2/src/SignatureTransfer.sol\":{\"keccak256\":\"0xa821caa24d6231fa8befe24a34bfda2c3b05b56e67fb913c86b26a19b19b6bbe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://584994a77e33aa2fe804b803ab302cb811ee945632b76f68d78db761b18a24a2\",\"dweb:/ipfs/QmVd67VRKX24tSaREBNwhzVfU6xxqRLNEoPY6CYgG3xU5W\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x96f516510d08da5b1d05d81b0bd88af6f9928bb757ba55c27e203654dfcd4fa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0942604688c369aed50905d7cef2ece68e1ff457c95a14c9f913babac29a09a\",\"dweb:/ipfs/Qmf4ZBYCKqQHfnACciz8GEMhwxPw7mhQ6fjGXwpgr8CQF8\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xbab1c35f0a63761be6b50a9a2ce2459b63f09587dd9c6ac46955252a1a04f43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://225dca1a3d91c0737fe75c72bfecae391fc2e7b2eb2ebe1a154bfb16a7527972\",\"dweb:/ipfs/QmdGQdUCANKZ6S23TyHDtBnGvr6CtyyqNNcziVTjEHJ5rk\"]},\"permit2/src/libraries/Allowance.sol\":{\"keccak256\":\"0x65ee20fb1a77d4e25dff2feb84027ff9096b065b6fc064c80f9eee49f1f9d498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f65d62fc64a55b6e3aad9932959ab3f47d701c45f95622215aca0ba076f1a7d\",\"dweb:/ipfs/QmZjDb4Nq9pssFefg8X9bwJNJ4RJEPD8vCaFR2Ur2N4boD\"]},\"permit2/src/libraries/PermitHash.sol\":{\"keccak256\":\"0x54af80d9c3193934c6947c31f59b8f3d7918f83676fe92ed6136593ad591d478\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5264001770be2cdeb7651e4d22af7edbc4e16da6d38747efeb4f54b5472ca5c5\",\"dweb:/ipfs/QmPvwau7DXw6stGQ14hpyTeLdYDYrrrdMnUfkQTPpMXQxz\"]},\"permit2/src/libraries/SignatureVerification.sol\":{\"keccak256\":\"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab\",\"dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i\"]},\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"contracts/test/MintableERC20.sol":{"MintableERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"amountToMint","type":"uint256"}],"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":"amount","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_string_fromMemory":{"entryPoint":1162,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":1342,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":1281,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":1126,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60e060408181523462000461576200138f803803809162000021828662000466565b8439820191606081840312620004615780516001600160401b039390848111620004615781620000539184016200048a565b936020918284015182811162000461578591620000729186016200048a565b930151928551958287116200044b576000968062000091895462000501565b92601f93848111620003fa575b50869084831160011462000392578a9262000386575b50508160011b916000199060031b1c19161787555b81519083821162000372578190600193620000e5855462000501565b8281116200031d575b5086918311600114620002b9578992620002ad575b5050600019600383901b1c191690821b1781555b60126080524660a05284518654918188620001328562000501565b92838352878301958882821691826000146200028d5750506001146200024d575b50620001629250038262000466565b51902090845190838201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452868301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a083015260a0825260c08201908282109082111762000239579285969260039287956200020d985251902060c0523383525220620002028282546200053e565b90556002546200053e565b60025551610e2c9081620005638239608051816107a9015260a05181610c47015260c05181610c6e0152f35b634e487b7160e01b87526041600452602487fd5b8791508a8052818b20908b915b858310620002745750506200016293508201013862000153565b805483880185015286945089939092019181016200025a565b60ff191688526200016295151560051b8501019250389150620001539050565b01519050388062000103565b848a52868a208594509190601f1984168b5b89828210620003065750508411620002ec575b505050811b01815562000117565b015160001960f88460031b161c19169055388080620002de565b8385015186558897909501949384019301620002cb565b90919250848a52868a208380860160051c82019289871062000368575b91869588929594930160051c01915b82811062000359575050620000ee565b8c815586955087910162000349565b925081926200033a565b634e487b7160e01b88526041600452602488fd5b015190503880620000b4565b8a8052878b209250601f1984168b5b89828210620003e3575050908460019594939210620003c9575b505050811b018755620000c9565b015160001960f88460031b161c19169055388080620003bb565b6001859682939686015181550195019301620003a1565b909150898052868a208480850160051c82019289861062000441575b9085949392910160051c01905b8181106200043257506200009e565b8b815584935060010162000423565b9250819262000416565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200044b57604052565b919080601f8401121562000461578251906001600160401b0382116200044b5760405191602091620004c6601f8301601f191684018562000466565b818452828287010111620004615760005b818110620004ed57508260009394955001015290565b8581018301518482018401528201620004d7565b90600182811c9216801562000533575b60208310146200051d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162000511565b919082018092116200054c57565b634e487b7160e01b600052601160045260246000fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90816306fdde03146109c157508063095ea7b31461092757806318160ddd146108ea57806323b872dd146107cd578063313ce567146107715780633644e5151461072f57806340c10f19146106b457806370a08231146106525780637ecebe00146105f057806395d89b41146104d5578063a9059cbb14610428578063d505accf146101285763dd62ed3e146100b257600080fd5b3461012457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101245760209282916100ed610bae565b6100f5610bd6565b9173ffffffffffffffffffffffffffffffffffffffff8092168452865283832091168252845220549051908152f35b8280fd5b509190346104245760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261042457610162610bae565b9061016b610bd6565b91604435606435926084359260ff8416809403610420574285106103c357610191610c42565b9573ffffffffffffffffffffffffffffffffffffffff8092169586895260209560058752848a209889549960018b01905585519285898501957f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c987528b89870152169a8b606086015288608086015260a085015260c084015260c0835260e0830167ffffffffffffffff948482108683111761039657818852845190206101008501927f19010000000000000000000000000000000000000000000000000000000000008452610102860152610122850152604281526101608401948186109086111761036a57848752519020835261018082015260a4356101a082015260c4356101c0909101528780528490889060809060015afa15610360578651169687151580610357575b156102fc5786977f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259596975283528087208688528352818188205551908152a380f35b8360649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b508488146102b9565b81513d88823e3d90fd5b60248c60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5060248c60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60648860208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b8680fd5b5080fd5b50503461042457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261042457602091610463610bae565b8273ffffffffffffffffffffffffffffffffffffffff6024359233855260038752828520610492858254610c35565b90551692838152600386522081815401905582519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843392a35160018152f35b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104245780519082600180549161051783610a85565b808652928281169081156105aa575060011461054e575b5050506105408261054a940383610ad8565b5191829182610b48565b0390f35b94508085527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8286106105925750505061054082602061054a958201019461052e565b80546020878701810191909152909501948101610575565b61054a9750869350602092506105409491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201019461052e565b5050346104245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424578060209273ffffffffffffffffffffffffffffffffffffffff610642610bae565b1681526005845220549051908152f35b5050346104245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424578060209273ffffffffffffffffffffffffffffffffffffffff6106a4610bae565b1681526003845220549051908152f35b50503461042457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261042457610729906106f0610bae565b9073ffffffffffffffffffffffffffffffffffffffff602435921684526003602052832061071f828254610bf9565b9055600254610bf9565b60025580f35b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104245760209061076a610c42565b9051908152f35b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5091346108e75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108e757610806610bae565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61082f610bd6565b946044358573ffffffffffffffffffffffffffffffffffffffff80951694858752602098848a958652838920338a52865283892054857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036108c4575b505050868852600385528288206108a5858254610c35565b9055169586815260038452208181540190558551908152a35160018152f35b6108cd91610c35565b90888a528652838920338a5286528389205538808561088d565b80fd5b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424576020906002549051908152f35b503461012457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012457602092610961610bae565b9183602435928392338252875273ffffffffffffffffffffffffffffffffffffffff8282209516948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8490843461012457827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610124578280546109fe81610a85565b808552916001918083169081156105aa5750600114610a29575050506105408261054a940383610ad8565b80809650527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828610610a6d5750505061054082602061054a958201019461052e565b80546020878701810191909152909501948101610a50565b90600182811c92168015610ace575b6020831014610a9f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691610a94565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610b1957604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60208082528251818301819052939260005b858110610b9a575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b818101830151848201604001528201610b5a565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610bd157565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610bd157565b91908201809211610c0657565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908203918211610c0657565b6000467f000000000000000000000000000000000000000000000000000000000000000003610c9057507f000000000000000000000000000000000000000000000000000000000000000090565b60405181548291610ca082610a85565b8082528160209485820194600190878282169182600014610de3575050600114610d8a575b50610cd292500382610ad8565b51902091604051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f845260408301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a083015260a0825260c082019082821067ffffffffffffffff831117610d5d575060405251902090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b87805286915087907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b858310610dcb575050610cd2935082010138610cc5565b80548388018501528694508893909201918101610db4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168852610cd295151560051b8501019250389150610cc5905056fea164736f6c6343000811000a","opcodes":"PUSH1 0xE0 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH3 0x461 JUMPI PUSH3 0x138F DUP1 CODESIZE SUB DUP1 SWAP2 PUSH3 0x21 DUP3 DUP7 PUSH3 0x466 JUMP JUMPDEST DUP5 CODECOPY DUP3 ADD SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH3 0x461 JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 DUP5 DUP2 GT PUSH3 0x461 JUMPI DUP2 PUSH3 0x53 SWAP2 DUP5 ADD PUSH3 0x48A JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP2 DUP3 DUP5 ADD MLOAD DUP3 DUP2 GT PUSH3 0x461 JUMPI DUP6 SWAP2 PUSH3 0x72 SWAP2 DUP7 ADD PUSH3 0x48A JUMP JUMPDEST SWAP4 ADD MLOAD SWAP3 DUP6 MLOAD SWAP6 DUP3 DUP8 GT PUSH3 0x44B JUMPI PUSH1 0x0 SWAP7 DUP1 PUSH3 0x91 DUP10 SLOAD PUSH3 0x501 JUMP JUMPDEST SWAP3 PUSH1 0x1F SWAP4 DUP5 DUP2 GT PUSH3 0x3FA JUMPI JUMPDEST POP DUP7 SWAP1 DUP5 DUP4 GT PUSH1 0x1 EQ PUSH3 0x392 JUMPI DUP11 SWAP3 PUSH3 0x386 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR DUP8 SSTORE JUMPDEST DUP2 MLOAD SWAP1 DUP4 DUP3 GT PUSH3 0x372 JUMPI DUP2 SWAP1 PUSH1 0x1 SWAP4 PUSH3 0xE5 DUP6 SLOAD PUSH3 0x501 JUMP JUMPDEST DUP3 DUP2 GT PUSH3 0x31D JUMPI JUMPDEST POP DUP7 SWAP2 DUP4 GT PUSH1 0x1 EQ PUSH3 0x2B9 JUMPI DUP10 SWAP3 PUSH3 0x2AD JUMPI JUMPDEST POP POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR DUP2 SSTORE JUMPDEST PUSH1 0x12 PUSH1 0x80 MSTORE CHAINID PUSH1 0xA0 MSTORE DUP5 MLOAD DUP7 SLOAD SWAP2 DUP2 DUP9 PUSH3 0x132 DUP6 PUSH3 0x501 JUMP JUMPDEST SWAP3 DUP4 DUP4 MSTORE DUP8 DUP4 ADD SWAP6 DUP9 DUP3 DUP3 AND SWAP2 DUP3 PUSH1 0x0 EQ PUSH3 0x28D JUMPI POP POP PUSH1 0x1 EQ PUSH3 0x24D JUMPI JUMPDEST POP PUSH3 0x162 SWAP3 POP SUB DUP3 PUSH3 0x466 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 DUP5 MLOAD SWAP1 DUP4 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE DUP7 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 DUP3 DUP3 LT SWAP1 DUP3 GT OR PUSH3 0x239 JUMPI SWAP3 DUP6 SWAP7 SWAP3 PUSH1 0x3 SWAP3 DUP8 SWAP6 PUSH3 0x20D SWAP9 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0xC0 MSTORE CALLER DUP4 MSTORE MSTORE KECCAK256 PUSH3 0x202 DUP3 DUP3 SLOAD PUSH3 0x53E JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH3 0x53E JUMP JUMPDEST PUSH1 0x2 SSTORE MLOAD PUSH2 0xE2C SWAP1 DUP2 PUSH3 0x563 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x7A9 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0xC47 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0xC6E ADD MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP8 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 DUP8 REVERT JUMPDEST DUP8 SWAP2 POP DUP11 DUP1 MSTORE DUP2 DUP12 KECCAK256 SWAP1 DUP12 SWAP2 JUMPDEST DUP6 DUP4 LT PUSH3 0x274 JUMPI POP POP PUSH3 0x162 SWAP4 POP DUP3 ADD ADD CODESIZE PUSH3 0x153 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP9 ADD DUP6 ADD MSTORE DUP7 SWAP5 POP DUP10 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH3 0x25A JUMP JUMPDEST PUSH1 0xFF NOT AND DUP9 MSTORE PUSH3 0x162 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP CODESIZE SWAP2 POP PUSH3 0x153 SWAP1 POP JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x103 JUMP JUMPDEST DUP5 DUP11 MSTORE DUP7 DUP11 KECCAK256 DUP6 SWAP5 POP SWAP2 SWAP1 PUSH1 0x1F NOT DUP5 AND DUP12 JUMPDEST DUP10 DUP3 DUP3 LT PUSH3 0x306 JUMPI POP POP DUP5 GT PUSH3 0x2EC JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP2 SSTORE PUSH3 0x117 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0x2DE JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE DUP9 SWAP8 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH3 0x2CB JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP DUP5 DUP11 MSTORE DUP7 DUP11 KECCAK256 DUP4 DUP1 DUP7 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP10 DUP8 LT PUSH3 0x368 JUMPI JUMPDEST SWAP2 DUP7 SWAP6 DUP9 SWAP3 SWAP6 SWAP5 SWAP4 ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH3 0x359 JUMPI POP POP PUSH3 0xEE JUMP JUMPDEST DUP13 DUP2 SSTORE DUP7 SWAP6 POP DUP8 SWAP2 ADD PUSH3 0x349 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH3 0x33A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP9 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 DUP9 REVERT JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0xB4 JUMP JUMPDEST DUP11 DUP1 MSTORE DUP8 DUP12 KECCAK256 SWAP3 POP PUSH1 0x1F NOT DUP5 AND DUP12 JUMPDEST DUP10 DUP3 DUP3 LT PUSH3 0x3E3 JUMPI POP POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH3 0x3C9 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP8 SSTORE PUSH3 0xC9 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0x3BB JUMP JUMPDEST PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP4 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH3 0x3A1 JUMP JUMPDEST SWAP1 SWAP2 POP DUP10 DUP1 MSTORE DUP7 DUP11 KECCAK256 DUP5 DUP1 DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP10 DUP7 LT PUSH3 0x441 JUMPI JUMPDEST SWAP1 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH3 0x432 JUMPI POP PUSH3 0x9E JUMP JUMPDEST DUP12 DUP2 SSTORE DUP5 SWAP4 POP PUSH1 0x1 ADD PUSH3 0x423 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH3 0x416 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH3 0x44B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH3 0x461 JUMPI DUP3 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH3 0x44B JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 SWAP2 PUSH3 0x4C6 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND DUP5 ADD DUP6 PUSH3 0x466 JUMP JUMPDEST DUP2 DUP5 MSTORE DUP3 DUP3 DUP8 ADD ADD GT PUSH3 0x461 JUMPI PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH3 0x4ED JUMPI POP DUP3 PUSH1 0x0 SWAP4 SWAP5 SWAP6 POP ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP6 DUP2 ADD DUP4 ADD MLOAD DUP5 DUP3 ADD DUP5 ADD MSTORE DUP3 ADD PUSH3 0x4D7 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH3 0x533 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH3 0x51D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH3 0x511 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH3 0x54C JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x9C1 JUMPI POP DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x927 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x8EA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x771 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x72F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x6B4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x128 JUMPI PUSH4 0xDD62ED3E EQ PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x124 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x124 JUMPI PUSH1 0x20 SWAP3 DUP3 SWAP2 PUSH2 0xED PUSH2 0xBAE JUMP JUMPDEST PUSH2 0xF5 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP5 MSTORE DUP7 MSTORE DUP4 DUP4 KECCAK256 SWAP2 AND DUP3 MSTORE DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 CALLVALUE PUSH2 0x424 JUMPI PUSH1 0xE0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH2 0x162 PUSH2 0xBAE JUMP JUMPDEST SWAP1 PUSH2 0x16B PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0xFF DUP5 AND DUP1 SWAP5 SUB PUSH2 0x420 JUMPI TIMESTAMP DUP6 LT PUSH2 0x3C3 JUMPI PUSH2 0x191 PUSH2 0xC42 JUMP JUMPDEST SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND SWAP6 DUP7 DUP10 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x5 DUP8 MSTORE DUP5 DUP11 KECCAK256 SWAP9 DUP10 SLOAD SWAP10 PUSH1 0x1 DUP12 ADD SWAP1 SSTORE DUP6 MLOAD SWAP3 DUP6 DUP10 DUP6 ADD SWAP6 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP8 MSTORE DUP12 DUP10 DUP8 ADD MSTORE AND SWAP11 DUP12 PUSH1 0x60 DUP7 ADD MSTORE DUP9 PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 MSTORE PUSH1 0xE0 DUP4 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP3 LT DUP7 DUP4 GT OR PUSH2 0x396 JUMPI DUP2 DUP9 MSTORE DUP5 MLOAD SWAP1 KECCAK256 PUSH2 0x100 DUP6 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH2 0x102 DUP7 ADD MSTORE PUSH2 0x122 DUP6 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x160 DUP5 ADD SWAP5 DUP2 DUP7 LT SWAP1 DUP7 GT OR PUSH2 0x36A JUMPI DUP5 DUP8 MSTORE MLOAD SWAP1 KECCAK256 DUP4 MSTORE PUSH2 0x180 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH2 0x1A0 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH2 0x1C0 SWAP1 SWAP2 ADD MSTORE DUP8 DUP1 MSTORE DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x80 SWAP1 PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x360 JUMPI DUP7 MLOAD AND SWAP7 DUP8 ISZERO ISZERO DUP1 PUSH2 0x357 JUMPI JUMPDEST ISZERO PUSH2 0x2FC JUMPI DUP7 SWAP8 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP6 SWAP7 SWAP8 MSTORE DUP4 MSTORE DUP1 DUP8 KECCAK256 DUP7 DUP9 MSTORE DUP4 MSTORE DUP2 DUP2 DUP9 KECCAK256 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 DUP1 RETURN JUMPDEST DUP4 PUSH1 0x64 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4552000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST POP DUP5 DUP9 EQ PUSH2 0x2B9 JUMP JUMPDEST DUP2 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x24 DUP13 PUSH1 0x41 DUP16 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST POP PUSH1 0x24 DUP13 PUSH1 0x41 DUP16 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST PUSH1 0x64 DUP9 PUSH1 0x20 DUP5 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x463 PUSH2 0xBAE JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD SWAP3 CALLER DUP6 MSTORE PUSH1 0x3 DUP8 MSTORE DUP3 DUP6 KECCAK256 PUSH2 0x492 DUP6 DUP3 SLOAD PUSH2 0xC35 JUMP JUMPDEST SWAP1 SSTORE AND SWAP3 DUP4 DUP2 MSTORE PUSH1 0x3 DUP7 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 CALLER SWAP3 LOG3 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI DUP1 MLOAD SWAP1 DUP3 PUSH1 0x1 DUP1 SLOAD SWAP2 PUSH2 0x517 DUP4 PUSH2 0xA85 JUMP JUMPDEST DUP1 DUP7 MSTORE SWAP3 DUP3 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5AA JUMPI POP PUSH1 0x1 EQ PUSH2 0x54E JUMPI JUMPDEST POP POP POP PUSH2 0x540 DUP3 PUSH2 0x54A SWAP5 SUB DUP4 PUSH2 0xAD8 JUMP JUMPDEST MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB48 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP5 POP DUP1 DUP6 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 JUMPDEST DUP3 DUP7 LT PUSH2 0x592 JUMPI POP POP POP PUSH2 0x540 DUP3 PUSH1 0x20 PUSH2 0x54A SWAP6 DUP3 ADD ADD SWAP5 PUSH2 0x52E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP8 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP6 ADD SWAP5 DUP2 ADD PUSH2 0x575 JUMP JUMPDEST PUSH2 0x54A SWAP8 POP DUP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0x540 SWAP5 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP5 PUSH2 0x52E JUMP JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI DUP1 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x642 PUSH2 0xBAE JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x5 DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI DUP1 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x6A4 PUSH2 0xBAE JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x3 DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH2 0x729 SWAP1 PUSH2 0x6F0 PUSH2 0xBAE JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD SWAP3 AND DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 KECCAK256 PUSH2 0x71F DUP3 DUP3 SLOAD PUSH2 0xBF9 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH2 0xBF9 JUMP JUMPDEST PUSH1 0x2 SSTORE DUP1 RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x76A PUSH2 0xC42 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x8E7 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x8E7 JUMPI PUSH2 0x806 PUSH2 0xBAE JUMP JUMPDEST PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x82F PUSH2 0xBD6 JUMP JUMPDEST SWAP5 PUSH1 0x44 CALLDATALOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP6 AND SWAP5 DUP6 DUP8 MSTORE PUSH1 0x20 SWAP9 DUP5 DUP11 SWAP6 DUP7 MSTORE DUP4 DUP10 KECCAK256 CALLER DUP11 MSTORE DUP7 MSTORE DUP4 DUP10 KECCAK256 SLOAD DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x8C4 JUMPI JUMPDEST POP POP POP DUP7 DUP9 MSTORE PUSH1 0x3 DUP6 MSTORE DUP3 DUP9 KECCAK256 PUSH2 0x8A5 DUP6 DUP3 SLOAD PUSH2 0xC35 JUMP JUMPDEST SWAP1 SSTORE AND SWAP6 DUP7 DUP2 MSTORE PUSH1 0x3 DUP5 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE DUP6 MLOAD SWAP1 DUP2 MSTORE LOG3 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x8CD SWAP2 PUSH2 0xC35 JUMP JUMPDEST SWAP1 DUP9 DUP11 MSTORE DUP7 MSTORE DUP4 DUP10 KECCAK256 CALLER DUP11 MSTORE DUP7 MSTORE DUP4 DUP10 KECCAK256 SSTORE CODESIZE DUP1 DUP6 PUSH2 0x88D JUMP JUMPDEST DUP1 REVERT JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x2 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x124 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x124 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x961 PUSH2 0xBAE JUMP JUMPDEST SWAP2 DUP4 PUSH1 0x24 CALLDATALOAD SWAP3 DUP4 SWAP3 CALLER DUP3 MSTORE DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP3 KECCAK256 SWAP6 AND SWAP5 DUP6 DUP3 MSTORE DUP8 MSTORE KECCAK256 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 CALLER SWAP3 LOG3 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP5 SWAP1 DUP5 CALLVALUE PUSH2 0x124 JUMPI DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x124 JUMPI DUP3 DUP1 SLOAD PUSH2 0x9FE DUP2 PUSH2 0xA85 JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x5AA JUMPI POP PUSH1 0x1 EQ PUSH2 0xA29 JUMPI POP POP POP PUSH2 0x540 DUP3 PUSH2 0x54A SWAP5 SUB DUP4 PUSH2 0xAD8 JUMP JUMPDEST DUP1 DUP1 SWAP7 POP MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP3 DUP7 LT PUSH2 0xA6D JUMPI POP POP POP PUSH2 0x540 DUP3 PUSH1 0x20 PUSH2 0x54A SWAP6 DUP3 ADD ADD SWAP5 PUSH2 0x52E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP8 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP6 ADD SWAP5 DUP2 ADD PUSH2 0xA50 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0xACE JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0xA9F JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0xA94 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB19 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP2 DUP4 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP3 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0xB9A JUMPI POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x40 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 ADD DUP4 ADD MLOAD DUP5 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xB5A JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBD1 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBD1 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xC06 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0xC06 JUMPI JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 SUB PUSH2 0xC90 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SLOAD DUP3 SWAP2 PUSH2 0xCA0 DUP3 PUSH2 0xA85 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 SWAP5 DUP6 DUP3 ADD SWAP5 PUSH1 0x1 SWAP1 DUP8 DUP3 DUP3 AND SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0xDE3 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xD8A JUMPI JUMPDEST POP PUSH2 0xCD2 SWAP3 POP SUB DUP3 PUSH2 0xAD8 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 PUSH1 0x40 MLOAD SWAP2 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0xD5D JUMPI POP PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 SWAP3 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP8 DUP1 MSTORE DUP7 SWAP2 POP DUP8 SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0xDCB JUMPI POP POP PUSH2 0xCD2 SWAP4 POP DUP3 ADD ADD CODESIZE PUSH2 0xCC5 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP9 ADD DUP6 ADD MSTORE DUP7 SWAP5 POP DUP9 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xDB4 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP9 MSTORE PUSH2 0xCD2 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP CODESIZE SWAP2 POP PUSH2 0xCC5 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"124:313:36:-:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;124:313:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;124:313:36;;;;;;;;;;;;;;258:2;2142:20:53;;2192:13;2173:32;;124:313:36;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5789:22:53;;124:313:36;;;5640:295:53;;;;124:313:36;5672:95:53;124:313:36;;;;;;5833:14:53;124:313:36;;;;2192:13:53;2142:20;124:313:36;;;5912:4:53;2173:32;124:313:36;;;2173:32:53;5640:295;;124:313:36;;;;;;;;;;;;;;;;;374:9;124:313;;;407:21;124:313;;;5613:336:53;;124:313:36;2215:51:53;277:10:36;124:313;;;;374:23;124:313;;;374:23;:::i;:::-;124:313;;407:21;124:313;407:21;:::i;:::-;;124:313;;;;;;;;2142:20:53;124:313:36;;;;;2173:32:53;124:313:36;;;;;;;;;;;;;-1:-1:-1;;;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;-1:-1:-1;;124:313:36;;;;;;;;;;;;;-1:-1:-1;124:313:36;;-1:-1:-1;124:313:36;;-1:-1:-1;124:313:36;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;-1:-1:-1;124:313:36;;-1:-1:-1;;124:313:36;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;-1:-1:-1;;;124:313:36;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;-1:-1:-1;;;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;-1:-1:-1;124:313:36;;-1:-1:-1;124:313:36;;;;;;;-1:-1:-1;;124:313:36;;;;-1:-1:-1;;;;;124:313:36;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;124:313:36;;;;;;;;;;;;;-1:-1:-1;;124:313:36;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":3030,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_5877":{"entryPoint":2990,"id":null,"parameterSlots":0,"returnSlots":1},"abi_encode_string":{"entryPoint":2888,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":3065,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":3125,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2693,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2776,"id":null,"parameterSlots":2,"returnSlots":0},"fun_DOMAIN_SEPARATOR":{"entryPoint":3138,"id":8444,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"8168":[{"length":32,"start":1961}],"8182":[{"length":32,"start":3143}],"8184":[{"length":32,"start":3182}]},"linkReferences":{},"object":"6080604081815260048036101561001557600080fd5b600092833560e01c90816306fdde03146109c157508063095ea7b31461092757806318160ddd146108ea57806323b872dd146107cd578063313ce567146107715780633644e5151461072f57806340c10f19146106b457806370a08231146106525780637ecebe00146105f057806395d89b41146104d5578063a9059cbb14610428578063d505accf146101285763dd62ed3e146100b257600080fd5b3461012457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101245760209282916100ed610bae565b6100f5610bd6565b9173ffffffffffffffffffffffffffffffffffffffff8092168452865283832091168252845220549051908152f35b8280fd5b509190346104245760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261042457610162610bae565b9061016b610bd6565b91604435606435926084359260ff8416809403610420574285106103c357610191610c42565b9573ffffffffffffffffffffffffffffffffffffffff8092169586895260209560058752848a209889549960018b01905585519285898501957f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c987528b89870152169a8b606086015288608086015260a085015260c084015260c0835260e0830167ffffffffffffffff948482108683111761039657818852845190206101008501927f19010000000000000000000000000000000000000000000000000000000000008452610102860152610122850152604281526101608401948186109086111761036a57848752519020835261018082015260a4356101a082015260c4356101c0909101528780528490889060809060015afa15610360578651169687151580610357575b156102fc5786977f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259596975283528087208688528352818188205551908152a380f35b8360649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b508488146102b9565b81513d88823e3d90fd5b60248c60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5060248c60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60648860208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b8680fd5b5080fd5b50503461042457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261042457602091610463610bae565b8273ffffffffffffffffffffffffffffffffffffffff6024359233855260038752828520610492858254610c35565b90551692838152600386522081815401905582519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843392a35160018152f35b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104245780519082600180549161051783610a85565b808652928281169081156105aa575060011461054e575b5050506105408261054a940383610ad8565b5191829182610b48565b0390f35b94508085527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8286106105925750505061054082602061054a958201019461052e565b80546020878701810191909152909501948101610575565b61054a9750869350602092506105409491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201019461052e565b5050346104245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424578060209273ffffffffffffffffffffffffffffffffffffffff610642610bae565b1681526005845220549051908152f35b5050346104245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424578060209273ffffffffffffffffffffffffffffffffffffffff6106a4610bae565b1681526003845220549051908152f35b50503461042457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261042457610729906106f0610bae565b9073ffffffffffffffffffffffffffffffffffffffff602435921684526003602052832061071f828254610bf9565b9055600254610bf9565b60025580f35b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104245760209061076a610c42565b9051908152f35b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5091346108e75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108e757610806610bae565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61082f610bd6565b946044358573ffffffffffffffffffffffffffffffffffffffff80951694858752602098848a958652838920338a52865283892054857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036108c4575b505050868852600385528288206108a5858254610c35565b9055169586815260038452208181540190558551908152a35160018152f35b6108cd91610c35565b90888a528652838920338a5286528389205538808561088d565b80fd5b50503461042457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610424576020906002549051908152f35b503461012457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012457602092610961610bae565b9183602435928392338252875273ffffffffffffffffffffffffffffffffffffffff8282209516948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8490843461012457827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610124578280546109fe81610a85565b808552916001918083169081156105aa5750600114610a29575050506105408261054a940383610ad8565b80809650527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828610610a6d5750505061054082602061054a958201019461052e565b80546020878701810191909152909501948101610a50565b90600182811c92168015610ace575b6020831014610a9f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691610a94565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610b1957604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60208082528251818301819052939260005b858110610b9a575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b818101830151848201604001528201610b5a565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610bd157565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610bd157565b91908201809211610c0657565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908203918211610c0657565b6000467f000000000000000000000000000000000000000000000000000000000000000003610c9057507f000000000000000000000000000000000000000000000000000000000000000090565b60405181548291610ca082610a85565b8082528160209485820194600190878282169182600014610de3575050600114610d8a575b50610cd292500382610ad8565b51902091604051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f845260408301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a083015260a0825260c082019082821067ffffffffffffffff831117610d5d575060405251902090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b87805286915087907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b858310610dcb575050610cd2935082010138610cc5565b80548388018501528694508893909201918101610db4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168852610cd295151560051b8501019250389150610cc5905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x9C1 JUMPI POP DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x927 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x8EA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x771 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x72F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x6B4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x128 JUMPI PUSH4 0xDD62ED3E EQ PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x124 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x124 JUMPI PUSH1 0x20 SWAP3 DUP3 SWAP2 PUSH2 0xED PUSH2 0xBAE JUMP JUMPDEST PUSH2 0xF5 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP5 MSTORE DUP7 MSTORE DUP4 DUP4 KECCAK256 SWAP2 AND DUP3 MSTORE DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 CALLVALUE PUSH2 0x424 JUMPI PUSH1 0xE0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH2 0x162 PUSH2 0xBAE JUMP JUMPDEST SWAP1 PUSH2 0x16B PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0xFF DUP5 AND DUP1 SWAP5 SUB PUSH2 0x420 JUMPI TIMESTAMP DUP6 LT PUSH2 0x3C3 JUMPI PUSH2 0x191 PUSH2 0xC42 JUMP JUMPDEST SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND SWAP6 DUP7 DUP10 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x5 DUP8 MSTORE DUP5 DUP11 KECCAK256 SWAP9 DUP10 SLOAD SWAP10 PUSH1 0x1 DUP12 ADD SWAP1 SSTORE DUP6 MLOAD SWAP3 DUP6 DUP10 DUP6 ADD SWAP6 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP8 MSTORE DUP12 DUP10 DUP8 ADD MSTORE AND SWAP11 DUP12 PUSH1 0x60 DUP7 ADD MSTORE DUP9 PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 MSTORE PUSH1 0xE0 DUP4 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP3 LT DUP7 DUP4 GT OR PUSH2 0x396 JUMPI DUP2 DUP9 MSTORE DUP5 MLOAD SWAP1 KECCAK256 PUSH2 0x100 DUP6 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH2 0x102 DUP7 ADD MSTORE PUSH2 0x122 DUP6 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x160 DUP5 ADD SWAP5 DUP2 DUP7 LT SWAP1 DUP7 GT OR PUSH2 0x36A JUMPI DUP5 DUP8 MSTORE MLOAD SWAP1 KECCAK256 DUP4 MSTORE PUSH2 0x180 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH2 0x1A0 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH2 0x1C0 SWAP1 SWAP2 ADD MSTORE DUP8 DUP1 MSTORE DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x80 SWAP1 PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x360 JUMPI DUP7 MLOAD AND SWAP7 DUP8 ISZERO ISZERO DUP1 PUSH2 0x357 JUMPI JUMPDEST ISZERO PUSH2 0x2FC JUMPI DUP7 SWAP8 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP6 SWAP7 SWAP8 MSTORE DUP4 MSTORE DUP1 DUP8 KECCAK256 DUP7 DUP9 MSTORE DUP4 MSTORE DUP2 DUP2 DUP9 KECCAK256 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 DUP1 RETURN JUMPDEST DUP4 PUSH1 0x64 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4552000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST POP DUP5 DUP9 EQ PUSH2 0x2B9 JUMP JUMPDEST DUP2 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x24 DUP13 PUSH1 0x41 DUP16 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST POP PUSH1 0x24 DUP13 PUSH1 0x41 DUP16 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST PUSH1 0x64 DUP9 PUSH1 0x20 DUP5 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x463 PUSH2 0xBAE JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD SWAP3 CALLER DUP6 MSTORE PUSH1 0x3 DUP8 MSTORE DUP3 DUP6 KECCAK256 PUSH2 0x492 DUP6 DUP3 SLOAD PUSH2 0xC35 JUMP JUMPDEST SWAP1 SSTORE AND SWAP3 DUP4 DUP2 MSTORE PUSH1 0x3 DUP7 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 CALLER SWAP3 LOG3 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI DUP1 MLOAD SWAP1 DUP3 PUSH1 0x1 DUP1 SLOAD SWAP2 PUSH2 0x517 DUP4 PUSH2 0xA85 JUMP JUMPDEST DUP1 DUP7 MSTORE SWAP3 DUP3 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5AA JUMPI POP PUSH1 0x1 EQ PUSH2 0x54E JUMPI JUMPDEST POP POP POP PUSH2 0x540 DUP3 PUSH2 0x54A SWAP5 SUB DUP4 PUSH2 0xAD8 JUMP JUMPDEST MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB48 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP5 POP DUP1 DUP6 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 JUMPDEST DUP3 DUP7 LT PUSH2 0x592 JUMPI POP POP POP PUSH2 0x540 DUP3 PUSH1 0x20 PUSH2 0x54A SWAP6 DUP3 ADD ADD SWAP5 PUSH2 0x52E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP8 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP6 ADD SWAP5 DUP2 ADD PUSH2 0x575 JUMP JUMPDEST PUSH2 0x54A SWAP8 POP DUP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0x540 SWAP5 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP5 PUSH2 0x52E JUMP JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI DUP1 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x642 PUSH2 0xBAE JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x5 DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI DUP1 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x6A4 PUSH2 0xBAE JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x3 DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH2 0x729 SWAP1 PUSH2 0x6F0 PUSH2 0xBAE JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD SWAP3 AND DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 KECCAK256 PUSH2 0x71F DUP3 DUP3 SLOAD PUSH2 0xBF9 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH2 0xBF9 JUMP JUMPDEST PUSH1 0x2 SSTORE DUP1 RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x76A PUSH2 0xC42 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x8E7 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x8E7 JUMPI PUSH2 0x806 PUSH2 0xBAE JUMP JUMPDEST PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x82F PUSH2 0xBD6 JUMP JUMPDEST SWAP5 PUSH1 0x44 CALLDATALOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP6 AND SWAP5 DUP6 DUP8 MSTORE PUSH1 0x20 SWAP9 DUP5 DUP11 SWAP6 DUP7 MSTORE DUP4 DUP10 KECCAK256 CALLER DUP11 MSTORE DUP7 MSTORE DUP4 DUP10 KECCAK256 SLOAD DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x8C4 JUMPI JUMPDEST POP POP POP DUP7 DUP9 MSTORE PUSH1 0x3 DUP6 MSTORE DUP3 DUP9 KECCAK256 PUSH2 0x8A5 DUP6 DUP3 SLOAD PUSH2 0xC35 JUMP JUMPDEST SWAP1 SSTORE AND SWAP6 DUP7 DUP2 MSTORE PUSH1 0x3 DUP5 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE DUP6 MLOAD SWAP1 DUP2 MSTORE LOG3 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x8CD SWAP2 PUSH2 0xC35 JUMP JUMPDEST SWAP1 DUP9 DUP11 MSTORE DUP7 MSTORE DUP4 DUP10 KECCAK256 CALLER DUP11 MSTORE DUP7 MSTORE DUP4 DUP10 KECCAK256 SSTORE CODESIZE DUP1 DUP6 PUSH2 0x88D JUMP JUMPDEST DUP1 REVERT JUMPDEST POP POP CALLVALUE PUSH2 0x424 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x424 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x2 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x124 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x124 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x961 PUSH2 0xBAE JUMP JUMPDEST SWAP2 DUP4 PUSH1 0x24 CALLDATALOAD SWAP3 DUP4 SWAP3 CALLER DUP3 MSTORE DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP3 KECCAK256 SWAP6 AND SWAP5 DUP6 DUP3 MSTORE DUP8 MSTORE KECCAK256 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 CALLER SWAP3 LOG3 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP5 SWAP1 DUP5 CALLVALUE PUSH2 0x124 JUMPI DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x124 JUMPI DUP3 DUP1 SLOAD PUSH2 0x9FE DUP2 PUSH2 0xA85 JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x5AA JUMPI POP PUSH1 0x1 EQ PUSH2 0xA29 JUMPI POP POP POP PUSH2 0x540 DUP3 PUSH2 0x54A SWAP5 SUB DUP4 PUSH2 0xAD8 JUMP JUMPDEST DUP1 DUP1 SWAP7 POP MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP3 DUP7 LT PUSH2 0xA6D JUMPI POP POP POP PUSH2 0x540 DUP3 PUSH1 0x20 PUSH2 0x54A SWAP6 DUP3 ADD ADD SWAP5 PUSH2 0x52E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP8 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP6 ADD SWAP5 DUP2 ADD PUSH2 0xA50 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0xACE JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0xA9F JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0xA94 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB19 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP2 DUP4 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP3 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0xB9A JUMPI POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x40 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 ADD DUP4 ADD MLOAD DUP5 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xB5A JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBD1 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xBD1 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xC06 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0xC06 JUMPI JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 SUB PUSH2 0xC90 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SLOAD DUP3 SWAP2 PUSH2 0xCA0 DUP3 PUSH2 0xA85 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 SWAP5 DUP6 DUP3 ADD SWAP5 PUSH1 0x1 SWAP1 DUP8 DUP3 DUP3 AND SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0xDE3 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xD8A JUMPI JUMPDEST POP PUSH2 0xCD2 SWAP3 POP SUB DUP3 PUSH2 0xAD8 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 PUSH1 0x40 MLOAD SWAP2 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0xD5D JUMPI POP PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 SWAP3 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP8 DUP1 MSTORE DUP7 SWAP2 POP DUP8 SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0xDCB JUMPI POP POP PUSH2 0xCD2 SWAP4 POP DUP3 ADD ADD CODESIZE PUSH2 0xCC5 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP9 ADD DUP6 ADD MSTORE DUP7 SWAP5 POP DUP9 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xDB4 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP9 MSTORE PUSH2 0xCD2 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP CODESIZE SWAP2 POP PUSH2 0xCC5 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"124:313:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4057:15:53;4045:27;;124:313:36;;4428:18:53;;:::i;:::-;124:313:36;;;;;;;;;;;4873:6:53;124:313:36;;;;;;;;;;;;;;;;4511:449:53;;;;;124:313:36;4555:165:53;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;4511:449:53;;124:313:36;;;;;;;;;;;;;;;;;;;4472:514:53;;4350:658;;;124:313:36;;;;;;;;;;;;;4350:658:53;;124:313:36;;;;;;;;;;;;;;;;;4319:707:53;;124:313:36;;;;;;;;;;;;;;;;;;;4292:805:53;;;124:313:36;;;;;;;4292:805:53;;;;;;;124:313:36;5120:30:53;;;;:59;;;124:313:36;;;;;;5283:31:53;124:313:36;;;;;;;;;;;;;;;;;;;;;;;5283:31:53;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;5120:59:53;5154:25;;;;5120:59;;4292:805;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2774:10:53;;124:313:36;;2764:9:53;124:313:36;;;;;2764:31:53;124:313:36;;;2764:31:53;:::i;:::-;124:313:36;;;;;;;2764:9:53;124:313:36;;;;;;;;;;;;;;2990:32:53;2774:10;;2990:32;;124:313:36;;;;;;;;;;;;;;;;;;;;;;1056:20:53;124:313:36;;;;;;:::i;:::-;;;;;;;;;1056:20:53;;;;124:313:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1751:41:53;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1337:44:53;124:313:36;;;;;;;;;;;;;;;;;;;;;;;407:21;124:313;;;:::i;:::-;;;;;;;;;374:9;124:313;;;;374:23;124:313;;;374:23;:::i;:::-;124:313;;407:21;124:313;407:21;:::i;:::-;;124:313;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1083:31:53;124:313:36;;;;;;;;;;;;;;;;;;;:::i;:::-;3594:26:53;124:313:36;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3225:10:53;124:313:36;;;;;;;;3287:28:53;3298:17;3287:28;;3283:80;;124:313:36;;;;;;;3374:9:53;124:313:36;;;;;3374:25:53;124:313:36;;;3374:25:53;:::i;:::-;124:313:36;;;;;;;3374:9:53;124:313:36;;;;;;;;;;;;;;3594:26:53;124:313:36;;;;;3283:80:53;3347:16;;;:::i;:::-;124:313:36;;;;;;;;;3225:10:53;124:313:36;;;;;;;;3283:80:53;;;;;124:313:36;;;;;;;;;;;;;;;;;;1304:26:53;124:313:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2561:10:53;;;;124:313:36;;;;;;;;;;;;;;;;;;;;;;;2606:37:53;2561:10;;2606:37;;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;5327:177:53:-;-1:-1:-1;5410:13:53;5427:16;5410:33;5427:16;;5446:24;;5327:177;:::o;5410:87::-;124:313:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5789:22:53;;124:313:36;;;5640:295:53;;;124:313:36;5672:95:53;124:313:36;;;;;;5833:14:53;124:313:36;;;;5410:13:53;124:313:36;;;;5912:4:53;124:313:36;;;;;5640:295:53;;124:313:36;;;;;;;;;;;;;;;;;5613:336:53;;5327:177;:::o;124:313:36:-;;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;124:313:36;;-1:-1:-1;124:313:36;;-1:-1:-1;124:313:36"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amountToMint\",\"type\":\"uint256\"}],\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"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\":\"\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MintableERC20.sol\":\"MintableERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/test/MintableERC20.sol\":{\"keccak256\":\"0x101384603913959f95320b9cce41446d9ee4de822ff8276177e6934666b21e41\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://da4766e6c85c0c105799b9cffa6a80835558a7ea6d568767c66c9e057f4ce304\",\"dweb:/ipfs/QmPZNGLVge3vF6yzJfSPf4UhJkufCoLVWszQxQvrq9ZWzX\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}"}},"contracts/test/MockLooksRareRewardsDistributor.sol":{"MockLooksRareRewardsDistributor":{"abi":[{"inputs":[{"internalType":"address","name":"_routerRewardsDistributor","type":"address"},{"internalType":"address","name":"_looksRareToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"routerRewardsDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":165,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"60c03461008a57601f61033338819003918201601f19168301916001600160401b0383118484101761008f57808492604094855283398101031261008a57610052602061004b836100a5565b92016100a5565b6080919091526001600160a01b031660a05260405161027990816100ba823960805181818160c901526101d4015260a05181602d0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361008a5756fe6080806040526004361015610174575b50346101285773ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016906040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020918282602481875afa908115610134578392600092610140575b50604490600060405196879485937fa9059cbb0000000000000000000000000000000000000000000000000000000085527f000000000000000000000000000000000000000000000000000000000000000016600485015260248401525af180156101345761010157005b81813d831161012d575b61011581836101fc565b8101031261012857518015150361012857005b600080fd5b503d61010b565b6040513d6000823e3d90fd5b91909282813d831161016d575b61015781836101fc565b8101031261016a57505182916044610096565b80fd5b503d61014d565b600090813560e01c635abe7a361461018c575061000f565b346101f857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f85760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761023d57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xC0 CALLVALUE PUSH2 0x8A JUMPI PUSH1 0x1F PUSH2 0x333 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x8F JUMPI DUP1 DUP5 SWAP3 PUSH1 0x40 SWAP5 DUP6 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x8A JUMPI PUSH2 0x52 PUSH1 0x20 PUSH2 0x4B DUP4 PUSH2 0xA5 JUMP JUMPDEST SWAP3 ADD PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x80 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x279 SWAP1 DUP2 PUSH2 0xBA DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH1 0xC9 ADD MSTORE PUSH2 0x1D4 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH1 0x2D ADD MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x8A JUMPI JUMP INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x174 JUMPI JUMPDEST POP CALLVALUE PUSH2 0x128 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND SWAP1 PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 PUSH1 0x24 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x134 JUMPI DUP4 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0x140 JUMPI JUMPDEST POP PUSH1 0x44 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH32 0x0 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x134 JUMPI PUSH2 0x101 JUMPI STOP JUMPDEST DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x115 DUP2 DUP4 PUSH2 0x1FC JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD DUP1 ISZERO ISZERO SUB PUSH2 0x128 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x10B JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP3 DUP3 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x16D JUMPI JUMPDEST PUSH2 0x157 DUP2 DUP4 PUSH2 0x1FC JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x16A JUMPI POP MLOAD DUP3 SWAP2 PUSH1 0x44 PUSH2 0x96 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x14D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x5ABE7A36 EQ PUSH2 0x18C JUMPI POP PUSH2 0xF JUMP JUMPDEST CALLVALUE PUSH2 0x1F8 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1F8 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x23D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"124:464:37:-:0;;;;;;;;;;;;;-1:-1:-1;;124:464:37;;;;-1:-1:-1;;;;;124:464:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;345:52;;;;;-1:-1:-1;;;;;124:464:37;;407:39;124:464;;;;;;;;345:52;124:464;;;;;;;;;;;;;;;;;;-1:-1:-1;124:464:37;;;;;;-1:-1:-1;124:464:37;;;;;-1:-1:-1;124:464:37;;;;-1:-1:-1;;;;;124:464:37;;;;;;:::o"},"deployedBytecode":{"functionDebugData":{"finalize_allocation":{"entryPoint":508,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"5221":[{"length":32,"start":201},{"length":32,"start":468}],"5224":[{"length":32,"start":45}]},"linkReferences":{},"object":"6080806040526004361015610174575b50346101285773ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016906040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020918282602481875afa908115610134578392600092610140575b50604490600060405196879485937fa9059cbb0000000000000000000000000000000000000000000000000000000085527f000000000000000000000000000000000000000000000000000000000000000016600485015260248401525af180156101345761010157005b81813d831161012d575b61011581836101fc565b8101031261012857518015150361012857005b600080fd5b503d61010b565b6040513d6000823e3d90fd5b91909282813d831161016d575b61015781836101fc565b8101031261016a57505182916044610096565b80fd5b503d61014d565b600090813560e01c635abe7a361461018c575061000f565b346101f857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f85760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761023d57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x174 JUMPI JUMPDEST POP CALLVALUE PUSH2 0x128 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND SWAP1 PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 PUSH1 0x24 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x134 JUMPI DUP4 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0x140 JUMPI JUMPDEST POP PUSH1 0x44 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH32 0x0 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x134 JUMPI PUSH2 0x101 JUMPI STOP JUMPDEST DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x115 DUP2 DUP4 PUSH2 0x1FC JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD DUP1 ISZERO ISZERO SUB PUSH2 0x128 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x10B JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP3 DUP3 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x16D JUMPI JUMPDEST PUSH2 0x157 DUP2 DUP4 PUSH2 0x1FC JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x16A JUMPI POP MLOAD DUP3 SWAP2 PUSH1 0x44 PUSH2 0x96 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x14D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x5ABE7A36 EQ PUSH2 0x18C JUMPI POP PUSH2 0xF JUMP JUMPDEST CALLVALUE PUSH2 0x1F8 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1F8 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x23D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"124:464:37:-:0;;;;;;;;;;-1:-1:-1;124:464:37;;;;;489:14;;124:464;;;;;539:39;;572:4;124:464;539:39;;124:464;539:39;;;;124:464;539:39;;;;;;;;;;;-1:-1:-1;539:39:37;;;-1:-1:-1;124:464:37;;;-1:-1:-1;124:464:37;;489:90;;;;;124:464;489:90;;513:24;124:464;;489:90;;124:464;;;;;489:90;;;;;;;;124:464;489:90;;;;;;;;;;;;;:::i;:::-;;;124:464;;;;;;;;;;;489:90;124:464;-1:-1:-1;124:464:37;;489:90;;;;;;124:464;;;-1:-1:-1;124:464:37;;;;;539:39;;;;;;;;;;;;;;;;:::i;:::-;;;124:464;;;;-1:-1:-1;124:464:37;;;;539:39;;124:464;;;539:39;;;;;124:464;;;;;;;;;;;;;;;;;;;;;;;;;;171:49;124:464;171:49;124:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;"},"methodIdentifiers":{"routerRewardsDistributor()":"5abe7a36"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_routerRewardsDistributor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_looksRareToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"routerRewardsDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockLooksRareRewardsDistributor.sol\":\"MockLooksRareRewardsDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/test/MockLooksRareRewardsDistributor.sol\":{\"keccak256\":\"0x05b68fbaf1cab0b5cd1b1e1a40740508f13804b14e9f511f1a00146582487d96\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ada09086cff081fe8e2586fbd57d020c28077e4f340b3dc528027b7d8acf9b95\",\"dweb:/ipfs/QmbKiC6ELzNCwsfXgv4Kt6kTVacF6SapMfdEYyosy1CTth\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}"}},"contracts/test/ReenteringProtocol.sol":{"ReenteringProtocol":{"abi":[{"inputs":[],"name":"NotAllowedReenter","type":"error"},{"inputs":[{"internalType":"address","name":"universalRouter","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"callAndReenter","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234610016576101c6908161001c8239f35b600080fdfe60808060405260048036101561001457600080fd5b600091823560e01c63260b0b4c1461002b57600080fd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55782823573ffffffffffffffffffffffffffffffffffffffff811681036101b1576024359067ffffffffffffffff938483116101ad57366023840112156101ad57828601358581116101a95736602482860101116101a957818186959260248794018337810182815203925af1903d156101a3573d81811161017757604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f85011601168301908382109082111761014b5760405281528360203d92013e5b15610123575080f35b6040517fb418cb98000000000000000000000000000000000000000000000000000000008152fd5b6024866041877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024856041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5061011a565b8480fd5b8380fd5b5080fd5b8280fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x16 JUMPI PUSH2 0x1C6 SWAP1 DUP2 PUSH2 0x1C DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x260B0B4C EQ PUSH2 0x2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B5 JUMPI DUP3 DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1B1 JUMPI PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 GT PUSH2 0x1AD JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x1AD JUMPI DUP3 DUP7 ADD CALLDATALOAD DUP6 DUP2 GT PUSH2 0x1A9 JUMPI CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1A9 JUMPI DUP2 DUP2 DUP7 SWAP6 SWAP3 PUSH1 0x24 DUP8 SWAP5 ADD DUP4 CALLDATACOPY DUP2 ADD DUP3 DUP2 MSTORE SUB SWAP3 GAS CALL SWAP1 RETURNDATASIZE ISZERO PUSH2 0x1A3 JUMPI RETURNDATASIZE DUP2 DUP2 GT PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x3F DUP2 PUSH1 0x1F DUP6 ADD AND ADD AND DUP4 ADD SWAP1 DUP4 DUP3 LT SWAP1 DUP3 GT OR PUSH2 0x14B JUMPI PUSH1 0x40 MSTORE DUP2 MSTORE DUP4 PUSH1 0x20 RETURNDATASIZE SWAP3 ADD RETURNDATACOPY JUMPDEST ISZERO PUSH2 0x123 JUMPI POP DUP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB418CB9800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 DUP7 PUSH1 0x41 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST PUSH1 0x24 DUP6 PUSH1 0x41 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST POP PUSH2 0x11A JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"71:264:38:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260048036101561001457600080fd5b600091823560e01c63260b0b4c1461002b57600080fd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55782823573ffffffffffffffffffffffffffffffffffffffff811681036101b1576024359067ffffffffffffffff938483116101ad57366023840112156101ad57828601358581116101a95736602482860101116101a957818186959260248794018337810182815203925af1903d156101a3573d81811161017757604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f85011601168301908382109082111761014b5760405281528360203d92013e5b15610123575080f35b6040517fb418cb98000000000000000000000000000000000000000000000000000000008152fd5b6024866041877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024856041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5061011a565b8480fd5b8380fd5b5080fd5b8280fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x260B0B4C EQ PUSH2 0x2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B5 JUMPI DUP3 DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1B1 JUMPI PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 GT PUSH2 0x1AD JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x1AD JUMPI DUP3 DUP7 ADD CALLDATALOAD DUP6 DUP2 GT PUSH2 0x1A9 JUMPI CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1A9 JUMPI DUP2 DUP2 DUP7 SWAP6 SWAP3 PUSH1 0x24 DUP8 SWAP5 ADD DUP4 CALLDATACOPY DUP2 ADD DUP3 DUP2 MSTORE SUB SWAP3 GAS CALL SWAP1 RETURNDATASIZE ISZERO PUSH2 0x1A3 JUMPI RETURNDATASIZE DUP2 DUP2 GT PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x3F DUP2 PUSH1 0x1F DUP6 ADD AND ADD AND DUP4 ADD SWAP1 DUP4 DUP3 LT SWAP1 DUP3 GT OR PUSH2 0x14B JUMPI PUSH1 0x40 MSTORE DUP2 MSTORE DUP4 PUSH1 0x20 RETURNDATASIZE SWAP3 ADD RETURNDATACOPY JUMPDEST ISZERO PUSH2 0x123 JUMPI POP DUP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB418CB9800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 DUP7 PUSH1 0x41 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST PUSH1 0x24 DUP6 PUSH1 0x41 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST POP PUSH2 0x11A JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"71:264:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:26;;;;71:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;290:8;286:40;;71:264;;;286:40;71:264;;307:19;;;;71:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"callAndReenter(address,bytes)":"260b0b4c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NotAllowedReenter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"universalRouter\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"callAndReenter\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ReenteringProtocol.sol\":\"ReenteringProtocol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/test/ReenteringProtocol.sol\":{\"keccak256\":\"0x0d4733524eed98bf3a7842a9f91305f1a3ea378a88a0fba7551d8c8a8b781caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c560208a79b9f9984838751b27ebc959d7d894bd653fd54642eecb72c73526fa\",\"dweb:/ipfs/QmbuWD3qFU2rsWGdThZ7hVJpafKkV2tnA2YGVvXpMpG6ws\"]}},\"version\":1}"}},"contracts/test/TestCustomErrors.sol":{"TestCustomErrors":{"abi":[{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"UnsafeCast","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608080604052346013576011908160198239f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x13 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x19 DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"71:173:39:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"71:173:39:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeCast\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestCustomErrors.sol\":\"TestCustomErrors\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/test/TestCustomErrors.sol\":{\"keccak256\":\"0xedb19dc4c9ea9e30df42b0c098ff1b3f175be9a239a501f701cdc3c05f095115\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c22e305236c3b36d27ca39e487378a4d83394f4a09a5f3062dfa0e604d4ad09\",\"dweb:/ipfs/QmeKgaAsqQmHkiETkceqnmWhr1evKwWPquiBFkZjGKXwNX\"]}},\"version\":1}"}},"permit2/src/AllowanceTransfer.sol":{"AllowanceTransfer":{"abi":[{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"AllowanceExpired","type":"error"},{"inputs":[],"name":"ExcessiveInvalidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"inputs":[],"name":"InvalidContractSignature","type":"error"},{"inputs":[],"name":"InvalidNonce","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSignatureLength","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[{"internalType":"uint256","name":"signatureDeadline","type":"uint256"}],"name":"SignatureExpired","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"Lockdown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint48","name":"newNonce","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"oldNonce","type":"uint48"}],"name":"NonceInvalidation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"nonce","type":"uint48"}],"name":"Permit","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint48","name":"newNonce","type":"uint48"}],"name":"invalidateNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"internalType":"struct IAllowanceTransfer.TokenSpenderPair[]","name":"approvals","type":"tuple[]"}],"name":"lockdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permitBatch","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct IAllowanceTransfer.AllowanceTransferDetails[]","name":"transferDetails","type":"tuple[]"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60c0346100bb574660a052602081017f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408301524660608301523060808301526080825260a082019180831060018060401b038411176100a557826040525190206080526116a090816100c18239608051816111ff015260a051816111d90152f35b634e487b7160e01b600052604160045260246000fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630d58b1db14610b7d5780632a2d80d11461081a5780632b67b570146106035780633644e515146105c257806336c785161461054f57806365d9723c146103ac57806387517c4514610272578063927da105146101c65763cc53287f1461007f57600080fd5b346101c1576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15767ffffffffffffffff906004358281116101c157366023820112156101c15780600401359283116101c1576024810190602436918560061b0101116101c15760005b8381106100fa57005b8061011061010b6001938786611025565b611035565b6101258561011f848988611025565b01611035565b336000526000865260406000209173ffffffffffffffffffffffffffffffffffffffff80911692836000528752604060002091169081600052865260406000207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055604051918252858201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a460403392a2016100f1565b600080fd5b346101c15760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c1576101fd610ca9565b610205610ccc565b61020d610cef565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526020818152604080832094861683529381528382209285168252918252829020548251938116845265ffffffffffff60a082901c169184019190915260d01c90820152606090f35b346101c15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c1576102a9610ca9565b6102b1610ccc565b906102ba610cef565b65ffffffffffff91606435838116918282036101c15779ffffffffffff0000000000000000000000000000000000000000933360005260006020527fffffffffffff000000000000000000000000000000000000000000000000000060406000209673ffffffffffffffffffffffffffffffffffffffff80941697886000526020528360406000209916988960005260205260406000209486156000146103a457504216925b8454921695869360a01b1691161717905560405191825260208201527fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b60403392a4005b905092610360565b346101c15760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c1576103e3610ca9565b6103eb610ccc565b9060443565ffffffffffff808216918281036101c157336000526020906000825260406000209473ffffffffffffffffffffffffffffffffffffffff80911695866000528352604060002096169586600052825260406000205460d01c92838511156105255761ffff9084830316116104fb5733600052600082526040600020856000528252604060002086600052825260406000209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b1691161790556040519283528201527f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f360403392a4005b60046040517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b346101c15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c157610586610ca9565b61058e610ccc565b610596610cef565b6064359173ffffffffffffffffffffffffffffffffffffffff831683036101c1576105c093610e48565b005b346101c15760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15760206105fb6111d6565b604051908152f35b346101c1576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15761063b610ca9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36019060c082126101c157604051906060820167ffffffffffffffff93838210858311176107eb5760809082604052126101c15761069981610d33565b73ffffffffffffffffffffffffffffffffffffffff9060243582811681036101c157815260443582811681036101c157608085015265ffffffffffff60643581811681036101c15760a086015260843590811681036101c15760c0850152835260a4359281841684036101c1576020810193845260c43594604082019086825260e4359081116101c157610731903690600401610dd7565b9190968042116107ba57506105c0966107b0926107aa879361075387516112f4565b90888b511690516040519160208301937ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d08552604084015260608301526080820152608081526107a281610d4f565b519020611291565b916113a0565b5192511691611056565b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346101c1577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060813601126101c157610852610ca9565b906024359067ffffffffffffffff908183116101c15760609083360301126101c1576040519160608301838110838211176107eb5760405280600401358281116101c1578101366023820112156101c15760048101356108b181610dac565b916108bf6040519384610d6b565b8183526024602084019260071b820101903682116101c157602401915b818310610b1b5750505083526044906108f760248201610d12565b60208501520135908160408401526044359081116101c15761091d903690600401610dd7565b918042116107ba5750838351519161093483610dac565b926109426040519485610d6b565b8084527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061096f82610dac565b0136602086013760005b818110610a94575050604051602081019081602086519196019060005b818110610a7b575050506109d481610a4596037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610d6b565b519020936107aa73ffffffffffffffffffffffffffffffffffffffff958660208901511660408901516040519160208301937faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638552604084015260608301526080820152608081526107a281610d4f565b602082015116908051519160005b838110610a5c57005b80610a758387610a6f6001958851610e05565b51611056565b01610a53565b825188526020978801978b975090920191600101610996565b9091939250610aad610aa7828851610e05565b516112f4565b610ab78285610e05565b527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aec576001019086929391610979565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6080833603126101c1576020608091604051610b3681610d33565b610b3f86610d12565b8152610b4c838701610d12565b83820152610b5c60408701610dc4565b6040820152610b6d60608701610dc4565b60608201528152019201916108dc565b346101c1576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15767ffffffffffffffff6004358181116101c157366023820112156101c15780600401359182116101c1576024906007368385831b840101116101c15760005b848110610bf557005b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126101c157610ca3600192604051610c3981610d33565b610c44888301610d12565b8082526060610c5560448501610d12565b92838d820152610c796084610c6c60648801610d12565b9687604085015201610d12565b918291015273ffffffffffffffffffffffffffffffffffffffff8080809316951693169116610e48565b01610bec565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b6080810190811067ffffffffffffffff8211176107eb57604052565b60a0810190811067ffffffffffffffff8211176107eb57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176107eb57604052565b67ffffffffffffffff81116107eb5760051b60200190565b359065ffffffffffff821682036101c157565b9181601f840112156101c15782359167ffffffffffffffff83116101c157602083818601950101116101c157565b8051821015610e195760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b909273ffffffffffffffffffffffffffffffffffffffff80921660009281845283602052604094818686209416938486526020528585203386526020528585209687549765ffffffffffff8960a01c16804211610ff5575083891698848a03610f7e575b505086517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452821660248401521660448201529293509091602090839060649082855af19151600114601f3d1116158216610f71575b5015610f145750565b606490517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d1715905038610f0b565b8985851611600014610fba5760248a8a51907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000169883900384169890981790975594958695908183610eac565b6024908951907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9190811015610e195760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036101c15790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff9081855116948260208201511692808660408094015116951695600091878352826020528383208984526020528383209916988983526020528282209184835460d01c036111ad57918561118694927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec9897969450871560001461118b5779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611118565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611221577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408201524660608201523060808201526080815261128b81610d4f565b51902090565b6112996111d6565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526080810181811067ffffffffffffffff8211176107eb5760405251902090565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176107eb5760405251902090565b91908260409103126101c1576020823592013590565b6000843b611507575060418203611485576113bd8282018261138a565b93909260401015610e195760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156114795773ffffffffffffffffffffffffffffffffffffffff806000511691821561144f57160361142557565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b604082036114dd576114999181019061138a565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211610aec5760209360009360ff6080946113db565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa908115611688578291611603575b507fffffffff00000000000000000000000000000000000000000000000000000000915016036115d957565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d8211611680575b8161161d60209383610d6b565b8101031261167c5751907fffffffff000000000000000000000000000000000000000000000000000000008216820361167957507fffffffff0000000000000000000000000000000000000000000000000000000090386115ad565b80fd5b5080fd5b3d9150611610565b6040513d84823e3d90fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xC0 CALLVALUE PUSH2 0xBB JUMPI CHAINID PUSH1 0xA0 MSTORE PUSH1 0x20 DUP2 ADD PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP2 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP4 ADD MSTORE CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x80 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP2 DUP1 DUP4 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP5 GT OR PUSH2 0xA5 JUMPI DUP3 PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE PUSH2 0x16A0 SWAP1 DUP2 PUSH2 0xC1 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x11FF ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x11D9 ADD MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD58B1DB EQ PUSH2 0xB7D JUMPI DUP1 PUSH4 0x2A2D80D1 EQ PUSH2 0x81A JUMPI DUP1 PUSH4 0x2B67B570 EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0x36C78516 EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0x65D9723C EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x87517C45 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x1C6 JUMPI PUSH4 0xCC53287F EQ PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1C1 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x1C1 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x1C1 JUMPI PUSH1 0x24 DUP2 ADD SWAP1 PUSH1 0x24 CALLDATASIZE SWAP2 DUP6 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x1C1 JUMPI PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xFA JUMPI STOP JUMPDEST DUP1 PUSH2 0x110 PUSH2 0x10B PUSH1 0x1 SWAP4 DUP8 DUP7 PUSH2 0x1025 JUMP JUMPDEST PUSH2 0x1035 JUMP JUMPDEST PUSH2 0x125 DUP6 PUSH2 0x11F DUP5 DUP10 DUP9 PUSH2 0x1025 JUMP JUMPDEST ADD PUSH2 0x1035 JUMP JUMPDEST CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP3 DUP4 PUSH1 0x0 MSTORE DUP8 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND SWAP1 DUP2 PUSH1 0x0 MSTORE DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 SLOAD AND SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE DUP6 DUP3 ADD MSTORE PUSH32 0x89B1ADD15EFF56B3DFE299AD94E01F2B52FBCB80AE1A3BAEA6AE8C04CB2B98A4 PUSH1 0x40 CALLER SWAP3 LOG2 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x1FD PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x205 PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x20D PUSH2 0xCEF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 SWAP3 DUP6 AND DUP3 MSTORE SWAP2 DUP3 MSTORE DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP2 AND DUP5 MSTORE PUSH6 0xFFFFFFFFFFFF PUSH1 0xA0 DUP3 SWAP1 SHR AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xD0 SHR SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x2A9 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0xCCC JUMP JUMPDEST SWAP1 PUSH2 0x2BA PUSH2 0xCEF JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF SWAP2 PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND SWAP2 DUP3 DUP3 SUB PUSH2 0x1C1 JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP4 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP8 DUP9 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP4 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP10 AND SWAP9 DUP10 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP5 DUP7 ISZERO PUSH1 0x0 EQ PUSH2 0x3A4 JUMPI POP TIMESTAMP AND SWAP3 JUMPDEST DUP5 SLOAD SWAP3 AND SWAP6 DUP7 SWAP4 PUSH1 0xA0 SHL AND SWAP2 AND OR OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xDA9FA7C1B00402C17D0161B249B1AB8BBEC047C5A52207B9C112DEFFD817036B PUSH1 0x40 CALLER SWAP3 LOG4 STOP JUMPDEST SWAP1 POP SWAP3 PUSH2 0x360 JUMP JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x3E3 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x3EB PUSH2 0xCCC JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 DUP3 DUP2 SUB PUSH2 0x1C1 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP6 DUP7 PUSH1 0x0 MSTORE DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP7 AND SWAP6 DUP7 PUSH1 0x0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0xD0 SHR SWAP3 DUP4 DUP6 GT ISZERO PUSH2 0x525 JUMPI PUSH2 0xFFFF SWAP1 DUP5 DUP4 SUB AND GT PUSH2 0x4FB JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP6 PUSH1 0x0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP7 PUSH1 0x0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH26 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xD0 SHL AND SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE PUSH32 0x55EB90D810E1700B35A8E7E25395FF7F2B2259ABD7415CA2284DFB1C246418F3 PUSH1 0x40 CALLER SWAP3 LOG4 STOP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x24D35A2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x586 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x58E PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x596 PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP4 SUB PUSH2 0x1C1 JUMPI PUSH2 0x5C0 SWAP4 PUSH2 0xE48 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH1 0x20 PUSH2 0x5FB PUSH2 0x11D6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x63B PUSH2 0xCA9 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD SWAP1 PUSH1 0xC0 DUP3 SLT PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP4 DUP3 LT DUP6 DUP4 GT OR PUSH2 0x7EB JUMPI PUSH1 0x80 SWAP1 DUP3 PUSH1 0x40 MSTORE SLT PUSH2 0x1C1 JUMPI PUSH2 0x699 DUP2 PUSH2 0xD33 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI DUP2 MSTORE PUSH1 0x44 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI PUSH1 0x80 DUP6 ADD MSTORE PUSH6 0xFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI PUSH1 0xC0 DUP6 ADD MSTORE DUP4 MSTORE PUSH1 0xA4 CALLDATALOAD SWAP3 DUP2 DUP5 AND DUP5 SUB PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP2 ADD SWAP4 DUP5 MSTORE PUSH1 0xC4 CALLDATALOAD SWAP5 PUSH1 0x40 DUP3 ADD SWAP1 DUP7 DUP3 MSTORE PUSH1 0xE4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x1C1 JUMPI PUSH2 0x731 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xDD7 JUMP JUMPDEST SWAP2 SWAP1 SWAP7 DUP1 TIMESTAMP GT PUSH2 0x7BA JUMPI POP PUSH2 0x5C0 SWAP7 PUSH2 0x7B0 SWAP3 PUSH2 0x7AA DUP8 SWAP4 PUSH2 0x753 DUP8 MLOAD PUSH2 0x12F4 JUMP JUMPDEST SWAP1 DUP9 DUP12 MLOAD AND SWAP1 MLOAD PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 PUSH32 0xF3841CD1FF0085026A6327B620B67997CE40F282C88A8E905A7A5626E310F3D0 DUP6 MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x7A2 DUP2 PUSH2 0xD4F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x1291 JUMP JUMPDEST SWAP2 PUSH2 0x13A0 JUMP JUMPDEST MLOAD SWAP3 MLOAD AND SWAP2 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0x60 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x852 PUSH2 0xCA9 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 GT PUSH2 0x1C1 JUMPI PUSH1 0x60 SWAP1 DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD DUP4 DUP2 LT DUP4 DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1C1 JUMPI DUP2 ADD CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x4 DUP2 ADD CALLDATALOAD PUSH2 0x8B1 DUP2 PUSH2 0xDAC JUMP JUMPDEST SWAP2 PUSH2 0x8BF PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xD6B JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x24 PUSH1 0x20 DUP5 ADD SWAP3 PUSH1 0x7 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0x1C1 JUMPI PUSH1 0x24 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0xB1B JUMPI POP POP POP DUP4 MSTORE PUSH1 0x44 SWAP1 PUSH2 0x8F7 PUSH1 0x24 DUP3 ADD PUSH2 0xD12 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP1 DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x1C1 JUMPI PUSH2 0x91D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xDD7 JUMP JUMPDEST SWAP2 DUP1 TIMESTAMP GT PUSH2 0x7BA JUMPI POP DUP4 DUP4 MLOAD MLOAD SWAP2 PUSH2 0x934 DUP4 PUSH2 0xDAC JUMP JUMPDEST SWAP3 PUSH2 0x942 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xD6B JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x96F DUP3 PUSH2 0xDAC JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xA94 JUMPI POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 DUP2 PUSH1 0x20 DUP7 MLOAD SWAP2 SWAP7 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xA7B JUMPI POP POP POP PUSH2 0x9D4 DUP2 PUSH2 0xA45 SWAP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xD6B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0x7AA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH1 0x20 DUP10 ADD MLOAD AND PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 PUSH32 0xAF1B0D30D2CAB0380E68F0689007E3254993C596F2FDD0AAA7F4D04F79440863 DUP6 MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x7A2 DUP2 PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD AND SWAP1 DUP1 MLOAD MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xA5C JUMPI STOP JUMPDEST DUP1 PUSH2 0xA75 DUP4 DUP8 PUSH2 0xA6F PUSH1 0x1 SWAP6 DUP9 MLOAD PUSH2 0xE05 JUMP JUMPDEST MLOAD PUSH2 0x1056 JUMP JUMPDEST ADD PUSH2 0xA53 JUMP JUMPDEST DUP3 MLOAD DUP9 MSTORE PUSH1 0x20 SWAP8 DUP9 ADD SWAP8 DUP12 SWAP8 POP SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x996 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP3 POP PUSH2 0xAAD PUSH2 0xAA7 DUP3 DUP9 MLOAD PUSH2 0xE05 JUMP JUMPDEST MLOAD PUSH2 0x12F4 JUMP JUMPDEST PUSH2 0xAB7 DUP3 DUP6 PUSH2 0xE05 JUMP JUMPDEST MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xAEC JUMPI PUSH1 0x1 ADD SWAP1 DUP7 SWAP3 SWAP4 SWAP2 PUSH2 0x979 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 DUP4 CALLDATASIZE SUB SLT PUSH2 0x1C1 JUMPI PUSH1 0x20 PUSH1 0x80 SWAP2 PUSH1 0x40 MLOAD PUSH2 0xB36 DUP2 PUSH2 0xD33 JUMP JUMPDEST PUSH2 0xB3F DUP7 PUSH2 0xD12 JUMP JUMPDEST DUP2 MSTORE PUSH2 0xB4C DUP4 DUP8 ADD PUSH2 0xD12 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0xB5C PUSH1 0x40 DUP8 ADD PUSH2 0xDC4 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xB6D PUSH1 0x60 DUP8 ADD PUSH2 0xDC4 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x8DC JUMP JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x1C1 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x1C1 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x1C1 JUMPI PUSH1 0x24 SWAP1 PUSH1 0x7 CALLDATASIZE DUP4 DUP6 DUP4 SHL DUP5 ADD ADD GT PUSH2 0x1C1 JUMPI PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0xBF5 JUMPI STOP JUMPDEST DUP1 DUP3 SHL DUP4 ADD SWAP1 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0xCA3 PUSH1 0x1 SWAP3 PUSH1 0x40 MLOAD PUSH2 0xC39 DUP2 PUSH2 0xD33 JUMP JUMPDEST PUSH2 0xC44 DUP9 DUP4 ADD PUSH2 0xD12 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x60 PUSH2 0xC55 PUSH1 0x44 DUP6 ADD PUSH2 0xD12 JUMP JUMPDEST SWAP3 DUP4 DUP14 DUP3 ADD MSTORE PUSH2 0xC79 PUSH1 0x84 PUSH2 0xC6C PUSH1 0x64 DUP9 ADD PUSH2 0xD12 JUMP JUMPDEST SWAP7 DUP8 PUSH1 0x40 DUP6 ADD MSTORE ADD PUSH2 0xD12 JUMP JUMPDEST SWAP2 DUP3 SWAP2 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 DUP1 SWAP4 AND SWAP6 AND SWAP4 AND SWAP2 AND PUSH2 0xE48 JUMP JUMPDEST ADD PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7EB JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x1C1 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x1C1 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x0 SWAP3 DUP2 DUP5 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP5 DUP2 DUP7 DUP7 KECCAK256 SWAP5 AND SWAP4 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP6 DUP6 KECCAK256 CALLER DUP7 MSTORE PUSH1 0x20 MSTORE DUP6 DUP6 KECCAK256 SWAP7 DUP8 SLOAD SWAP8 PUSH6 0xFFFFFFFFFFFF DUP10 PUSH1 0xA0 SHR AND DUP1 TIMESTAMP GT PUSH2 0xFF5 JUMPI POP DUP4 DUP10 AND SWAP9 DUP5 DUP11 SUB PUSH2 0xF7E JUMPI JUMPDEST POP POP DUP7 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP3 AND PUSH1 0x24 DUP5 ADD MSTORE AND PUSH1 0x44 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP4 SWAP1 PUSH1 0x64 SWAP1 DUP3 DUP6 GAS CALL SWAP2 MLOAD PUSH1 0x1 EQ PUSH1 0x1F RETURNDATASIZE GT AND ISZERO DUP3 AND PUSH2 0xF71 JUMPI JUMPDEST POP ISZERO PUSH2 0xF14 JUMPI POP JUMP JUMPDEST PUSH1 0x64 SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0xF0B JUMP JUMPDEST DUP10 DUP6 DUP6 AND GT PUSH1 0x0 EQ PUSH2 0xFBA JUMPI PUSH1 0x24 DUP11 DUP11 MLOAD SWAP1 PUSH32 0xF96FB07100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP9 DUP4 SWAP1 SUB DUP5 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP8 SSTORE SWAP5 SWAP6 DUP7 SWAP6 SWAP1 DUP2 DUP4 PUSH2 0xEAC JUMP JUMPDEST PUSH1 0x24 SWAP1 DUP10 MLOAD SWAP1 PUSH32 0xD81B2F2E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0x60 DUP5 ADD MLOAD AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP6 MLOAD AND SWAP5 DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND SWAP3 DUP1 DUP7 PUSH1 0x40 DUP1 SWAP5 ADD MLOAD AND SWAP6 AND SWAP6 PUSH1 0x0 SWAP2 DUP8 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 DUP10 DUP5 MSTORE PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 SWAP10 AND SWAP9 DUP10 DUP4 MSTORE PUSH1 0x20 MSTORE DUP3 DUP3 KECCAK256 SWAP2 DUP5 DUP4 SLOAD PUSH1 0xD0 SHR SUB PUSH2 0x11AD JUMPI SWAP2 DUP6 PUSH2 0x1186 SWAP5 SWAP3 PUSH32 0xC6A377BFC4EB120024A8AC08EEF205BE16B817020812C73223E81D1BDB9708EC SWAP9 SWAP8 SWAP7 SWAP5 POP DUP8 ISZERO PUSH1 0x0 EQ PUSH2 0x118B JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 TIMESTAMP AND JUMPDEST PUSH1 0xA0 SHL AND PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP7 ADD PUSH1 0xD0 SHL AND OR OR SWAP1 SSTORE MLOAD SWAP4 DUP5 SWAP4 DUP5 SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP6 ADD SWAP7 AND DUP5 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST POP PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP8 PUSH2 0x1118 JUMP JUMPDEST PUSH1 0x4 DUP5 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CHAINID PUSH32 0x0 SUB PUSH2 0x1221 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x128B DUP2 PUSH2 0xD4F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1299 PUSH2 0x11D6 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x65626CAD6CB96493BF6F5EBEA28756C966F023AB9E8A83A7101849D5573B3678 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x60 PUSH6 0xFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 EXTCODESIZE PUSH2 0x1507 JUMPI POP PUSH1 0x41 DUP3 SUB PUSH2 0x1485 JUMPI PUSH2 0x13BD DUP3 DUP3 ADD DUP3 PUSH2 0x138A JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x40 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x40 PUSH1 0x80 SWAP6 ADD CALLDATALOAD PUSH1 0xF8 SHR JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1479 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x0 MLOAD AND SWAP2 DUP3 ISZERO PUSH2 0x144F JUMPI AND SUB PUSH2 0x1425 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP3 SUB PUSH2 0x14DD JUMPI PUSH2 0x1499 SWAP2 DUP2 ADD SWAP1 PUSH2 0x138A JUMP JUMPDEST SWAP2 PUSH1 0x1B PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 PUSH1 0xFF SHR ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0xAEC JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x80 SWAP5 PUSH2 0x13DB JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4BE6321B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP3 SWAP4 SWAP2 PUSH1 0x1F SWAP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x64 PUSH1 0x20 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP15 DUP16 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP8 ADD MSTORE DUP2 PUSH1 0x44 DUP8 ADD MSTORE DUP7 DUP7 ADD CALLDATACOPY DUP12 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1688 JUMPI DUP3 SWAP2 PUSH2 0x1603 JUMPI JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 POP AND SUB PUSH2 0x15D9 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB0669CBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x1680 JUMPI JUMPDEST DUP2 PUSH2 0x161D PUSH1 0x20 SWAP4 DUP4 PUSH2 0xD6B JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x167C JUMPI MLOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x1679 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 CODESIZE PUSH2 0x15AD JUMP JUMPDEST DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"547:5666:40:-:0;;;;856:13:41;837:32;;1560:60;;;726:80;547:5666:40;;654:20:41;547:5666:40;;;;856:13:41;547:5666:40;;;;1614:4:41;547:5666:40;;;;;1560:60:41;;837:32;547:5666:40;;;;;;;;;;;;;;;;;;;;1550:71:41;;547:5666:40;879:74:41;547:5666:40;;;;;;;;;;;;837:32:41;547:5666:40;;;;;;;;;;-1:-1:-1;547:5666:40;;;;;-1:-1:-1;547:5666:40;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":3346,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_address_8817":{"entryPoint":3241,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_8824":{"entryPoint":3276,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_8836":{"entryPoint":3311,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bytes32t_bytes32":{"entryPoint":5002,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata":{"entryPoint":3543,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint48":{"entryPoint":3524,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint160_uint48_uint48":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"array_allocation_size_array_struct_PermitDetails_dyn":{"entryPoint":3500,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_struct_TokenSpenderPair_calldata_dyn_calldata":{"entryPoint":4133,"id":null,"parameterSlots":3,"returnSlots":1},"finalize_allocation":{"entryPoint":3435,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_12164":{"entryPoint":3407,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_8816":{"entryPoint":3379,"id":null,"parameterSlots":1,"returnSlots":0},"fun_DOMAIN_SEPARATOR":{"entryPoint":4566,"id":5893,"parameterSlots":0,"returnSlots":1},"fun_hashPermitDetails":{"entryPoint":4852,"id":7246,"parameterSlots":1,"returnSlots":1},"fun_hashTypedData":{"entryPoint":4753,"id":5937,"parameterSlots":1,"returnSlots":1},"fun_transfer":{"entryPoint":3656,"id":5641,"parameterSlots":4,"returnSlots":0},"fun_updateApproval":{"entryPoint":4182,"id":5841,"parameterSlots":3,"returnSlots":0},"fun_verify":{"entryPoint":5024,"id":7463,"parameterSlots":4,"returnSlots":0},"memory_array_index_access_struct_PermitDetails_dyn":{"entryPoint":3589,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":4149,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"5847":[{"length":32,"start":4607}],"5849":[{"length":32,"start":4569}]},"linkReferences":{},"object":"6080604052600436101561001257600080fd5b60003560e01c80630d58b1db14610b7d5780632a2d80d11461081a5780632b67b570146106035780633644e515146105c257806336c785161461054f57806365d9723c146103ac57806387517c4514610272578063927da105146101c65763cc53287f1461007f57600080fd5b346101c1576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15767ffffffffffffffff906004358281116101c157366023820112156101c15780600401359283116101c1576024810190602436918560061b0101116101c15760005b8381106100fa57005b8061011061010b6001938786611025565b611035565b6101258561011f848988611025565b01611035565b336000526000865260406000209173ffffffffffffffffffffffffffffffffffffffff80911692836000528752604060002091169081600052865260406000207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055604051918252858201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a460403392a2016100f1565b600080fd5b346101c15760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c1576101fd610ca9565b610205610ccc565b61020d610cef565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526020818152604080832094861683529381528382209285168252918252829020548251938116845265ffffffffffff60a082901c169184019190915260d01c90820152606090f35b346101c15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c1576102a9610ca9565b6102b1610ccc565b906102ba610cef565b65ffffffffffff91606435838116918282036101c15779ffffffffffff0000000000000000000000000000000000000000933360005260006020527fffffffffffff000000000000000000000000000000000000000000000000000060406000209673ffffffffffffffffffffffffffffffffffffffff80941697886000526020528360406000209916988960005260205260406000209486156000146103a457504216925b8454921695869360a01b1691161717905560405191825260208201527fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b60403392a4005b905092610360565b346101c15760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c1576103e3610ca9565b6103eb610ccc565b9060443565ffffffffffff808216918281036101c157336000526020906000825260406000209473ffffffffffffffffffffffffffffffffffffffff80911695866000528352604060002096169586600052825260406000205460d01c92838511156105255761ffff9084830316116104fb5733600052600082526040600020856000528252604060002086600052825260406000209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b1691161790556040519283528201527f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f360403392a4005b60046040517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b346101c15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c157610586610ca9565b61058e610ccc565b610596610cef565b6064359173ffffffffffffffffffffffffffffffffffffffff831683036101c1576105c093610e48565b005b346101c15760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15760206105fb6111d6565b604051908152f35b346101c1576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15761063b610ca9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36019060c082126101c157604051906060820167ffffffffffffffff93838210858311176107eb5760809082604052126101c15761069981610d33565b73ffffffffffffffffffffffffffffffffffffffff9060243582811681036101c157815260443582811681036101c157608085015265ffffffffffff60643581811681036101c15760a086015260843590811681036101c15760c0850152835260a4359281841684036101c1576020810193845260c43594604082019086825260e4359081116101c157610731903690600401610dd7565b9190968042116107ba57506105c0966107b0926107aa879361075387516112f4565b90888b511690516040519160208301937ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d08552604084015260608301526080820152608081526107a281610d4f565b519020611291565b916113a0565b5192511691611056565b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346101c1577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060813601126101c157610852610ca9565b906024359067ffffffffffffffff908183116101c15760609083360301126101c1576040519160608301838110838211176107eb5760405280600401358281116101c1578101366023820112156101c15760048101356108b181610dac565b916108bf6040519384610d6b565b8183526024602084019260071b820101903682116101c157602401915b818310610b1b5750505083526044906108f760248201610d12565b60208501520135908160408401526044359081116101c15761091d903690600401610dd7565b918042116107ba5750838351519161093483610dac565b926109426040519485610d6b565b8084527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061096f82610dac565b0136602086013760005b818110610a94575050604051602081019081602086519196019060005b818110610a7b575050506109d481610a4596037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610d6b565b519020936107aa73ffffffffffffffffffffffffffffffffffffffff958660208901511660408901516040519160208301937faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638552604084015260608301526080820152608081526107a281610d4f565b602082015116908051519160005b838110610a5c57005b80610a758387610a6f6001958851610e05565b51611056565b01610a53565b825188526020978801978b975090920191600101610996565b9091939250610aad610aa7828851610e05565b516112f4565b610ab78285610e05565b527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aec576001019086929391610979565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6080833603126101c1576020608091604051610b3681610d33565b610b3f86610d12565b8152610b4c838701610d12565b83820152610b5c60408701610dc4565b6040820152610b6d60608701610dc4565b60608201528152019201916108dc565b346101c1576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c15767ffffffffffffffff6004358181116101c157366023820112156101c15780600401359182116101c1576024906007368385831b840101116101c15760005b848110610bf557005b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126101c157610ca3600192604051610c3981610d33565b610c44888301610d12565b8082526060610c5560448501610d12565b92838d820152610c796084610c6c60648801610d12565b9687604085015201610d12565b918291015273ffffffffffffffffffffffffffffffffffffffff8080809316951693169116610e48565b01610bec565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c157565b6080810190811067ffffffffffffffff8211176107eb57604052565b60a0810190811067ffffffffffffffff8211176107eb57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176107eb57604052565b67ffffffffffffffff81116107eb5760051b60200190565b359065ffffffffffff821682036101c157565b9181601f840112156101c15782359167ffffffffffffffff83116101c157602083818601950101116101c157565b8051821015610e195760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b909273ffffffffffffffffffffffffffffffffffffffff80921660009281845283602052604094818686209416938486526020528585203386526020528585209687549765ffffffffffff8960a01c16804211610ff5575083891698848a03610f7e575b505086517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452821660248401521660448201529293509091602090839060649082855af19151600114601f3d1116158216610f71575b5015610f145750565b606490517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d1715905038610f0b565b8985851611600014610fba5760248a8a51907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000169883900384169890981790975594958695908183610eac565b6024908951907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9190811015610e195760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036101c15790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff9081855116948260208201511692808660408094015116951695600091878352826020528383208984526020528383209916988983526020528282209184835460d01c036111ad57918561118694927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec9897969450871560001461118b5779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611118565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611221577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408201524660608201523060808201526080815261128b81610d4f565b51902090565b6112996111d6565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526080810181811067ffffffffffffffff8211176107eb5760405251902090565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176107eb5760405251902090565b91908260409103126101c1576020823592013590565b6000843b611507575060418203611485576113bd8282018261138a565b93909260401015610e195760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156114795773ffffffffffffffffffffffffffffffffffffffff806000511691821561144f57160361142557565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b604082036114dd576114999181019061138a565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211610aec5760209360009360ff6080946113db565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa908115611688578291611603575b507fffffffff00000000000000000000000000000000000000000000000000000000915016036115d957565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d8211611680575b8161161d60209383610d6b565b8101031261167c5751907fffffffff000000000000000000000000000000000000000000000000000000008216820361167957507fffffffff0000000000000000000000000000000000000000000000000000000090386115ad565b80fd5b5080fd5b3d9150611610565b6040513d84823e3d90fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD58B1DB EQ PUSH2 0xB7D JUMPI DUP1 PUSH4 0x2A2D80D1 EQ PUSH2 0x81A JUMPI DUP1 PUSH4 0x2B67B570 EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0x36C78516 EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0x65D9723C EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x87517C45 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x1C6 JUMPI PUSH4 0xCC53287F EQ PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1C1 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x1C1 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x1C1 JUMPI PUSH1 0x24 DUP2 ADD SWAP1 PUSH1 0x24 CALLDATASIZE SWAP2 DUP6 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x1C1 JUMPI PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xFA JUMPI STOP JUMPDEST DUP1 PUSH2 0x110 PUSH2 0x10B PUSH1 0x1 SWAP4 DUP8 DUP7 PUSH2 0x1025 JUMP JUMPDEST PUSH2 0x1035 JUMP JUMPDEST PUSH2 0x125 DUP6 PUSH2 0x11F DUP5 DUP10 DUP9 PUSH2 0x1025 JUMP JUMPDEST ADD PUSH2 0x1035 JUMP JUMPDEST CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP3 DUP4 PUSH1 0x0 MSTORE DUP8 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND SWAP1 DUP2 PUSH1 0x0 MSTORE DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 SLOAD AND SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE DUP6 DUP3 ADD MSTORE PUSH32 0x89B1ADD15EFF56B3DFE299AD94E01F2B52FBCB80AE1A3BAEA6AE8C04CB2B98A4 PUSH1 0x40 CALLER SWAP3 LOG2 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x1FD PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x205 PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x20D PUSH2 0xCEF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 SWAP3 DUP6 AND DUP3 MSTORE SWAP2 DUP3 MSTORE DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP2 AND DUP5 MSTORE PUSH6 0xFFFFFFFFFFFF PUSH1 0xA0 DUP3 SWAP1 SHR AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xD0 SHR SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x2A9 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0xCCC JUMP JUMPDEST SWAP1 PUSH2 0x2BA PUSH2 0xCEF JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF SWAP2 PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND SWAP2 DUP3 DUP3 SUB PUSH2 0x1C1 JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP4 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP8 DUP9 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP4 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP10 AND SWAP9 DUP10 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP5 DUP7 ISZERO PUSH1 0x0 EQ PUSH2 0x3A4 JUMPI POP TIMESTAMP AND SWAP3 JUMPDEST DUP5 SLOAD SWAP3 AND SWAP6 DUP7 SWAP4 PUSH1 0xA0 SHL AND SWAP2 AND OR OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xDA9FA7C1B00402C17D0161B249B1AB8BBEC047C5A52207B9C112DEFFD817036B PUSH1 0x40 CALLER SWAP3 LOG4 STOP JUMPDEST SWAP1 POP SWAP3 PUSH2 0x360 JUMP JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x3E3 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x3EB PUSH2 0xCCC JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 DUP3 DUP2 SUB PUSH2 0x1C1 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP6 DUP7 PUSH1 0x0 MSTORE DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP7 AND SWAP6 DUP7 PUSH1 0x0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0xD0 SHR SWAP3 DUP4 DUP6 GT ISZERO PUSH2 0x525 JUMPI PUSH2 0xFFFF SWAP1 DUP5 DUP4 SUB AND GT PUSH2 0x4FB JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP6 PUSH1 0x0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP7 PUSH1 0x0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH26 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xD0 SHL AND SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE PUSH32 0x55EB90D810E1700B35A8E7E25395FF7F2B2259ABD7415CA2284DFB1C246418F3 PUSH1 0x40 CALLER SWAP3 LOG4 STOP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x24D35A2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x586 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x58E PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x596 PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP4 SUB PUSH2 0x1C1 JUMPI PUSH2 0x5C0 SWAP4 PUSH2 0xE48 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH1 0x20 PUSH2 0x5FB PUSH2 0x11D6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x63B PUSH2 0xCA9 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD SWAP1 PUSH1 0xC0 DUP3 SLT PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP4 DUP3 LT DUP6 DUP4 GT OR PUSH2 0x7EB JUMPI PUSH1 0x80 SWAP1 DUP3 PUSH1 0x40 MSTORE SLT PUSH2 0x1C1 JUMPI PUSH2 0x699 DUP2 PUSH2 0xD33 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI DUP2 MSTORE PUSH1 0x44 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI PUSH1 0x80 DUP6 ADD MSTORE PUSH6 0xFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI PUSH1 0xC0 DUP6 ADD MSTORE DUP4 MSTORE PUSH1 0xA4 CALLDATALOAD SWAP3 DUP2 DUP5 AND DUP5 SUB PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP2 ADD SWAP4 DUP5 MSTORE PUSH1 0xC4 CALLDATALOAD SWAP5 PUSH1 0x40 DUP3 ADD SWAP1 DUP7 DUP3 MSTORE PUSH1 0xE4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x1C1 JUMPI PUSH2 0x731 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xDD7 JUMP JUMPDEST SWAP2 SWAP1 SWAP7 DUP1 TIMESTAMP GT PUSH2 0x7BA JUMPI POP PUSH2 0x5C0 SWAP7 PUSH2 0x7B0 SWAP3 PUSH2 0x7AA DUP8 SWAP4 PUSH2 0x753 DUP8 MLOAD PUSH2 0x12F4 JUMP JUMPDEST SWAP1 DUP9 DUP12 MLOAD AND SWAP1 MLOAD PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 PUSH32 0xF3841CD1FF0085026A6327B620B67997CE40F282C88A8E905A7A5626E310F3D0 DUP6 MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x7A2 DUP2 PUSH2 0xD4F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x1291 JUMP JUMPDEST SWAP2 PUSH2 0x13A0 JUMP JUMPDEST MLOAD SWAP3 MLOAD AND SWAP2 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0x60 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0x852 PUSH2 0xCA9 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 GT PUSH2 0x1C1 JUMPI PUSH1 0x60 SWAP1 DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD DUP4 DUP2 LT DUP4 DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1C1 JUMPI DUP2 ADD CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x4 DUP2 ADD CALLDATALOAD PUSH2 0x8B1 DUP2 PUSH2 0xDAC JUMP JUMPDEST SWAP2 PUSH2 0x8BF PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xD6B JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x24 PUSH1 0x20 DUP5 ADD SWAP3 PUSH1 0x7 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0x1C1 JUMPI PUSH1 0x24 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0xB1B JUMPI POP POP POP DUP4 MSTORE PUSH1 0x44 SWAP1 PUSH2 0x8F7 PUSH1 0x24 DUP3 ADD PUSH2 0xD12 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP1 DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x1C1 JUMPI PUSH2 0x91D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xDD7 JUMP JUMPDEST SWAP2 DUP1 TIMESTAMP GT PUSH2 0x7BA JUMPI POP DUP4 DUP4 MLOAD MLOAD SWAP2 PUSH2 0x934 DUP4 PUSH2 0xDAC JUMP JUMPDEST SWAP3 PUSH2 0x942 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xD6B JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x96F DUP3 PUSH2 0xDAC JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xA94 JUMPI POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 DUP2 PUSH1 0x20 DUP7 MLOAD SWAP2 SWAP7 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xA7B JUMPI POP POP POP PUSH2 0x9D4 DUP2 PUSH2 0xA45 SWAP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xD6B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0x7AA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH1 0x20 DUP10 ADD MLOAD AND PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 PUSH32 0xAF1B0D30D2CAB0380E68F0689007E3254993C596F2FDD0AAA7F4D04F79440863 DUP6 MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x7A2 DUP2 PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD AND SWAP1 DUP1 MLOAD MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xA5C JUMPI STOP JUMPDEST DUP1 PUSH2 0xA75 DUP4 DUP8 PUSH2 0xA6F PUSH1 0x1 SWAP6 DUP9 MLOAD PUSH2 0xE05 JUMP JUMPDEST MLOAD PUSH2 0x1056 JUMP JUMPDEST ADD PUSH2 0xA53 JUMP JUMPDEST DUP3 MLOAD DUP9 MSTORE PUSH1 0x20 SWAP8 DUP9 ADD SWAP8 DUP12 SWAP8 POP SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x996 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP3 POP PUSH2 0xAAD PUSH2 0xAA7 DUP3 DUP9 MLOAD PUSH2 0xE05 JUMP JUMPDEST MLOAD PUSH2 0x12F4 JUMP JUMPDEST PUSH2 0xAB7 DUP3 DUP6 PUSH2 0xE05 JUMP JUMPDEST MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xAEC JUMPI PUSH1 0x1 ADD SWAP1 DUP7 SWAP3 SWAP4 SWAP2 PUSH2 0x979 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 DUP4 CALLDATASIZE SUB SLT PUSH2 0x1C1 JUMPI PUSH1 0x20 PUSH1 0x80 SWAP2 PUSH1 0x40 MLOAD PUSH2 0xB36 DUP2 PUSH2 0xD33 JUMP JUMPDEST PUSH2 0xB3F DUP7 PUSH2 0xD12 JUMP JUMPDEST DUP2 MSTORE PUSH2 0xB4C DUP4 DUP8 ADD PUSH2 0xD12 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0xB5C PUSH1 0x40 DUP8 ADD PUSH2 0xDC4 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xB6D PUSH1 0x60 DUP8 ADD PUSH2 0xDC4 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x8DC JUMP JUMPDEST CALLVALUE PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1C1 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x1C1 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x1C1 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x1C1 JUMPI PUSH1 0x24 SWAP1 PUSH1 0x7 CALLDATASIZE DUP4 DUP6 DUP4 SHL DUP5 ADD ADD GT PUSH2 0x1C1 JUMPI PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0xBF5 JUMPI STOP JUMPDEST DUP1 DUP3 SHL DUP4 ADD SWAP1 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1C1 JUMPI PUSH2 0xCA3 PUSH1 0x1 SWAP3 PUSH1 0x40 MLOAD PUSH2 0xC39 DUP2 PUSH2 0xD33 JUMP JUMPDEST PUSH2 0xC44 DUP9 DUP4 ADD PUSH2 0xD12 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x60 PUSH2 0xC55 PUSH1 0x44 DUP6 ADD PUSH2 0xD12 JUMP JUMPDEST SWAP3 DUP4 DUP14 DUP3 ADD MSTORE PUSH2 0xC79 PUSH1 0x84 PUSH2 0xC6C PUSH1 0x64 DUP9 ADD PUSH2 0xD12 JUMP JUMPDEST SWAP7 DUP8 PUSH1 0x40 DUP6 ADD MSTORE ADD PUSH2 0xD12 JUMP JUMPDEST SWAP2 DUP3 SWAP2 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 DUP1 SWAP4 AND SWAP6 AND SWAP4 AND SWAP2 AND PUSH2 0xE48 JUMP JUMPDEST ADD PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7EB JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1C1 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x1C1 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x1C1 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x0 SWAP3 DUP2 DUP5 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP5 DUP2 DUP7 DUP7 KECCAK256 SWAP5 AND SWAP4 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP6 DUP6 KECCAK256 CALLER DUP7 MSTORE PUSH1 0x20 MSTORE DUP6 DUP6 KECCAK256 SWAP7 DUP8 SLOAD SWAP8 PUSH6 0xFFFFFFFFFFFF DUP10 PUSH1 0xA0 SHR AND DUP1 TIMESTAMP GT PUSH2 0xFF5 JUMPI POP DUP4 DUP10 AND SWAP9 DUP5 DUP11 SUB PUSH2 0xF7E JUMPI JUMPDEST POP POP DUP7 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP3 AND PUSH1 0x24 DUP5 ADD MSTORE AND PUSH1 0x44 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP4 SWAP1 PUSH1 0x64 SWAP1 DUP3 DUP6 GAS CALL SWAP2 MLOAD PUSH1 0x1 EQ PUSH1 0x1F RETURNDATASIZE GT AND ISZERO DUP3 AND PUSH2 0xF71 JUMPI JUMPDEST POP ISZERO PUSH2 0xF14 JUMPI POP JUMP JUMPDEST PUSH1 0x64 SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0xF0B JUMP JUMPDEST DUP10 DUP6 DUP6 AND GT PUSH1 0x0 EQ PUSH2 0xFBA JUMPI PUSH1 0x24 DUP11 DUP11 MLOAD SWAP1 PUSH32 0xF96FB07100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP9 DUP4 SWAP1 SUB DUP5 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP8 SSTORE SWAP5 SWAP6 DUP7 SWAP6 SWAP1 DUP2 DUP4 PUSH2 0xEAC JUMP JUMPDEST PUSH1 0x24 SWAP1 DUP10 MLOAD SWAP1 PUSH32 0xD81B2F2E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1C1 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0x60 DUP5 ADD MLOAD AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP6 MLOAD AND SWAP5 DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND SWAP3 DUP1 DUP7 PUSH1 0x40 DUP1 SWAP5 ADD MLOAD AND SWAP6 AND SWAP6 PUSH1 0x0 SWAP2 DUP8 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 DUP10 DUP5 MSTORE PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 SWAP10 AND SWAP9 DUP10 DUP4 MSTORE PUSH1 0x20 MSTORE DUP3 DUP3 KECCAK256 SWAP2 DUP5 DUP4 SLOAD PUSH1 0xD0 SHR SUB PUSH2 0x11AD JUMPI SWAP2 DUP6 PUSH2 0x1186 SWAP5 SWAP3 PUSH32 0xC6A377BFC4EB120024A8AC08EEF205BE16B817020812C73223E81D1BDB9708EC SWAP9 SWAP8 SWAP7 SWAP5 POP DUP8 ISZERO PUSH1 0x0 EQ PUSH2 0x118B JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 TIMESTAMP AND JUMPDEST PUSH1 0xA0 SHL AND PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP7 ADD PUSH1 0xD0 SHL AND OR OR SWAP1 SSTORE MLOAD SWAP4 DUP5 SWAP4 DUP5 SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP6 ADD SWAP7 AND DUP5 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST POP PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP8 PUSH2 0x1118 JUMP JUMPDEST PUSH1 0x4 DUP5 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CHAINID PUSH32 0x0 SUB PUSH2 0x1221 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x128B DUP2 PUSH2 0xD4F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1299 PUSH2 0x11D6 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x65626CAD6CB96493BF6F5EBEA28756C966F023AB9E8A83A7101849D5573B3678 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x60 PUSH6 0xFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x7EB JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x1C1 JUMPI PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 EXTCODESIZE PUSH2 0x1507 JUMPI POP PUSH1 0x41 DUP3 SUB PUSH2 0x1485 JUMPI PUSH2 0x13BD DUP3 DUP3 ADD DUP3 PUSH2 0x138A JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x40 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x40 PUSH1 0x80 SWAP6 ADD CALLDATALOAD PUSH1 0xF8 SHR JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1479 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x0 MLOAD AND SWAP2 DUP3 ISZERO PUSH2 0x144F JUMPI AND SUB PUSH2 0x1425 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP3 SUB PUSH2 0x14DD JUMPI PUSH2 0x1499 SWAP2 DUP2 ADD SWAP1 PUSH2 0x138A JUMP JUMPDEST SWAP2 PUSH1 0x1B PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 PUSH1 0xFF SHR ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0xAEC JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x80 SWAP5 PUSH2 0x13DB JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4BE6321B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP3 SWAP4 SWAP2 PUSH1 0x1F SWAP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x64 PUSH1 0x20 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP15 DUP16 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP8 ADD MSTORE DUP2 PUSH1 0x44 DUP8 ADD MSTORE DUP7 DUP7 ADD CALLDATACOPY DUP12 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1688 JUMPI DUP3 SWAP2 PUSH2 0x1603 JUMPI JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 POP AND SUB PUSH2 0x15D9 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB0669CBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x1680 JUMPI JUMPDEST DUP2 PUSH2 0x161D PUSH1 0x20 SWAP4 DUP4 PUSH2 0xD6B JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x167C JUMPI MLOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x1679 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 CODESIZE PUSH2 0x15AD JUMP JUMPDEST DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"547:5666:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4534:10;;;;;;547:5666;4546:3;4585:12;:18;:12;547:5666;4585:12;;;;:::i;:::-;:18;:::i;:::-;4639:20;:12;;;;;;:::i;:::-;:20;;:::i;:::-;4356:10;547:5666;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4744:31;547:5666;4356:10;4744:31;;547:5666;4519:13;;547:5666;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;1383:10;;547:5666;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1510:54:48;:15;;:54;547:5666:40;;;1535:15:48;;547:5666:40;1510:54:48;;547:5666:40;;;;;;;;;;;;;;;;;;;;;;;;;1488:56;547:5666;1383:10;1488:56;;547:5666;1510:54:48;;;;;;547:5666:40;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;4973:10;547:5666;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5021:20;;;;;5017:47;;547:5666;;;;;;5233:24;5229:60;;4973:10;547:5666;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5379:65;547:5666;4973:10;5379:65;;547:5666;5229:60;547:5666;;;5266:23;;;;5017:47;547:5666;;;5050:14;;;;547:5666;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;2841:5;;;:::i;:::-;547:5666;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1710:15;;;;;:42;1706:97;;2078:20:49;1987::40;2078::49;1925:5:40;2078:20:49;1888:35:40;2078:20:49;;2059:40;2078:20;;2059:40;:::i;:::-;547:5666:40;;;;;;;;;2138:95:49;547:5666:40;2138:95:49;;547:5666:40;433:172:49;547:5666:40;;;433:172:49;;547:5666:40;;433:172:49;;547:5666:40;;433:172:49;;547:5666:40;;2138:95:49;;;;;:::i;:::-;547:5666:40;2128:106:49;;1888:35:40;:::i;:::-;1925:5;;:::i;:::-;1958:20;547:5666;;;1987:20;;:::i;1706:97::-;547:5666;;;;1761:42;;;;547:5666;1761:42;;547:5666;1761:42;547:5666;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;547:5666:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2172:15;;;:41;2168:95;;2375:19:49;;;;547:5666:40;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2498:14:49;;;;;;547:5666:40;;;;;2721:30:49;;661:173;;547:5666:40;;;661:173:49;547:5666:40;;661:173:49;547:5666:40;661:173:49;;;;;;2721:30;;;;;2384:5:40;2721:30:49;;547:5666:40;2721:30:49;;;;;;:::i;:::-;547:5666:40;2711:41:49;;547:5666:40;2348:34;547:5666;;;;;;;;;;;;;;2643:201:49;547:5666:40;2643:201:49;;547:5666:40;661:173:49;547:5666:40;;;433:172:49;;547:5666:40;;433:172:49;;547:5666:40;;433:172:49;;547:5666:40;;2643:201:49;;;;;:::i;2384:5:40:-;547:5666;;;;;2489:19;;;547:5666;2534:13;547:5666;2549:10;;;;;;547:5666;2561:3;2600:19;2631:7;2600:19;;:22;547:5666;2600:19;;;:22;:::i;:::-;;2631:7;:::i;:::-;547:5666;2534:13;;661:173:49;;;547:5666:40;;;661:173:49;;;;;;-1:-1:-1;661:173:49;;;;547:5666:40;661:173:49;;;2514:3;2570:19;;;;;2551:42;2570:22;:19;;;:22;:::i;:::-;;2551:42;:::i;:::-;2533:60;;;;:::i;:::-;547:5666:40;;;;;;;;2483:13:49;;;;;;;547:5666:40;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3090:10;;;;;;547:5666;3102:3;547:5666;;;;;;;;;;;;;;;3283:20;547:5666;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3283:20;:::i;:::-;547:5666;3075:13;;547:5666;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;433:172:49;547:5666:40;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;3482:737;;;547:5666;;;;3610:9;547:5666;;;;;;;;;;;;;;;;;;;;;;;;3633:10;547:5666;;;;;;;;;;;;;;;;3659:15;;:36;3655:85;;547:5666;;;;3799:30;;;;3795:289;;3482:737;-1:-1:-1;;1391:1378:55;;;;;;;;;;;;;;;;;;547:5666:40;1391:1378:55;;;;1325:12;;-1:-1:-1;1325:12:55;;547:5666:40;;1325:12:55;;1391:1378;;1325:12;;1391:1378;;;;;;;;;;;;;;;3482:737:40;547:5666;;;;3482:737;:::o;547:5666::-;1391:1378:55;547:5666:40;;;;;;1391:1378:55;547:5666:40;;;;1391:1378:55;547:5666:40;;;;1391:1378:55;547:5666:40;;;;1391:1378:55;;;;;;;-1:-1:-1;1391:1378:55;;;3795:289:40;547:5666;;;;3849:18;3845:229;3849:18;;;547:5666;;;;3894:32;;;;;;;547:5666;3894:32;3845:229;547:5666;;;;;;;;;;;;;;;;;;;;;;3795:289;;3655:85;547:5666;;;;3704:36;;;;;;;547:5666;3704:36;547:5666;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;5681:530::-;;547:5666;5801:13;;;;;547:5666;;;;;;;;5880:14;;;;;547:5666;;5924:18;;;;;;;547:5666;;;;-1:-1:-1;;547:5666:40;;;;;5880:14;547:5666;;;;;;;5880:14;547:5666;;;;;;;;;;5880:14;547:5666;;;;;;;;;;6033:22;6029:49;;843:79:48;;6148:56:40;843:79:48;;6148:56:40;843:79:48;;;;:40;;;:79;547:5666:40;;;;893:15:48;;547:5666:40;843:79:48;1883:3;547:5666:40;;;795:1:48;547:5666:40;;;;;1834:52:48;:61;1001:59;;547:5666:40;6148:56;;;;547:5666;;;;;;;;;;;;;;;;;;;;;;;;;;6148:56;;;;5681:530::o;843:79:48:-;;547:5666:40;843:79:48;;;6029:49:40;6064:14;547:5666;;6064:14;;;;1123:216:41;1198:13;1215:16;1198:33;1215:16;;1246:24;1123:216;:::o;1198:134::-;547:5666:40;;1560:60:41;;;547:5666:40;726:80:41;547:5666:40;;654:20:41;547:5666:40;;;;1198:13:41;547:5666:40;;;;1614:4:41;547:5666:40;;;;;1560:60:41;;;;;:::i;:::-;547:5666:40;1550:71:41;;1123:216;:::o;1685:167::-;1815:18;;:::i;:::-;547:5666:40;;;1786:58:41;;;;547:5666:40;;;;;;;;;;;;;1786:58:41;;547:5666:40;;;;;;;;;;;;;;;1776:69:41;;1685:167;:::o;5345:188:49:-;547:5666:40;;5480:45:49;;;547:5666:40;289:87:49;547:5666:40;;;289:87:49;;;547:5666:40;;289:87:49;;547:5666:40;5480:45:49;289:87;;;547:5666:40;289:87:49;;;547:5666:40;289:87:49;547:5666:40;289:87:49;;547:5666:40;289:87:49;;;547:5666:40;289:87:49;;;547:5666:40;289:87:49;;547:5666:40;289:87:49;;;547:5666:40;289:87:49;5480:45;;289:87;547:5666:40;;;;;;;;;;;;;;5470:56:49;;5345:188;:::o;547:5666:40:-;;;;;;;;;;;;;;;;;:::o;700:1109:51:-;-1:-1:-1;863:25:51;;;;-1:-1:-1;933:2:51;913:22;;933:2;;964:41;;;;;;:::i;:::-;955:50;;625:68;1043:2;625:68;;;;;;-1:-1:-1;625:68:51;547:5666:40;1043:2:51;625:68;;;1033:13;625:68;;909:490;547:5666:40;;;;;;625:68:51;;;;547:5666:40;625:68:51;;547:5666:40;625:68:51;;;547:5666:40;1429:24:51;;;;;;;;;547:5666:40;1429:24:51;-1:-1:-1;1429:24:51;547:5666:40;1471:20:51;;;1467:51;;547:5666:40;1536:23:51;1532:51;;700:1109::o;1532:51::-;1568:15;547:5666:40;;1568:15:51;;;;1467:51;1500:18;547:5666:40;;1500:18:51;;;;1429:24;547:5666:40;;;-1:-1:-1;547:5666:40;;;;;909:490:51;1092:2;1072:22;;1092:2;;1180:41;;;;;;:::i;:::-;1170:51;1312:2;626:66;1243:19;;625:68;547:5666:40;625:68:51;;;547:5666:40;625:68:51;;;;;1280:34;-1:-1:-1;1280:34:51;547:5666:40;625:68:51;1280:34;909:490;;1068:331;1360:24;1092:2;547:5666:40;1360:24:51;;;;859:944;547:5666:40;;;;;;;;1634:57:51;547:5666:40;;;;;;;;;;;;1634:57:51;;;;;;;547:5666:40;;;;;;;;;;;;;;;;;;;;;;;;;;1634:57:51;;547:5666:40;;1634:57:51;;;;;;;;;;;859:944;547:5666:40;;;;;1709:48:51;1705:87;;700:1109::o;1705:87::-;1634:57;547:5666:40;;1766:26:51;;;;1634:57;;;;;;;;;;;;;;;;;:::i;:::-;;;547:5666:40;;;;;;;;;;;;;1634:57:51;547:5666:40;1634:57:51;;;;547:5666:40;;;;;;;1634:57:51;;;-1:-1:-1;1634:57:51;;;547:5666:40;;;;;;;;"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address,address)":"927da105","approve(address,address,uint160,uint48)":"87517c45","invalidateNonces(address,address,uint48)":"65d9723c","lockdown((address,address)[])":"cc53287f","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"2a2d80d1","transferFrom((address,address,uint160,address)[])":"0d58b1db","transferFrom(address,address,uint160,address)":"36c78516"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureDeadline\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"Lockdown\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"oldNonce\",\"type\":\"uint48\"}],\"name\":\"NonceInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"name\":\"Permit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"}],\"name\":\"invalidateNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.TokenSpenderPair[]\",\"name\":\"approvals\",\"type\":\"tuple[]\"}],\"name\":\"lockdown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.AllowanceTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}],\"SignatureExpired(uint256)\":[{\"params\":{\"signatureDeadline\":\"The timestamp at which a signature is no longer valid\"}}]},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Uses cached version if chainid and address are unchanged from construction.\"},\"approve(address,address,uint160,uint48)\":{\"details\":\"The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval\",\"params\":{\"amount\":\"The approved amount of the token\",\"expiration\":\"The timestamp at which the approval is no longer valid\",\"spender\":\"The spender address to approve\",\"token\":\"The token to approve\"}},\"invalidateNonces(address,address,uint48)\":{\"details\":\"Can't invalidate more than 2**16 nonces per transaction.\",\"params\":{\"newNonce\":\"The new nonce to set. Invalidates all nonces less than it.\",\"spender\":\"The spender to invalidate nonces for\",\"token\":\"The token to invalidate nonces for\"}},\"lockdown((address,address)[])\":{\"params\":{\"approvals\":\"Array of approvals to revoke.\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitSingle\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitBatch\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"transferFrom((address,address,uint160,address)[])\":{\"details\":\"Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"transferDetails\":\"Array of owners, recipients, amounts, and tokens for the transfers\"}},\"transferFrom(address,address,uint160,address)\":{\"details\":\"Requires the from address to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"amount\":\"The amount of the token to transfer\",\"from\":\"The address to transfer from\",\"to\":\"The address of the recipient\",\"token\":\"The token address to transfer\"}}},\"stateVariables\":{\"allowance\":{\"details\":\"Indexed in the order of token owner address, token address, spender addressThe stored word saves the allowed amount, expiration on the allowance, and nonce\"}},\"version\":1},\"userdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"ExcessiveInvalidation()\":[{\"notice\":\"Thrown when too many nonces are invalidated.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}],\"InvalidContractSignature()\":[{\"notice\":\"Thrown when the recovered contract signature is incorrect\"}],\"InvalidNonce()\":[{\"notice\":\"Thrown when validating that the inputted nonce has not been used\"}],\"InvalidSignature()\":[{\"notice\":\"Thrown when the recovered signer is equal to the zero address\"}],\"InvalidSignatureLength()\":[{\"notice\":\"Thrown when the passed in signature is not a valid length\"}],\"InvalidSigner()\":[{\"notice\":\"Thrown when the recovered signer does not equal the claimedSigner\"}],\"SignatureExpired(uint256)\":[{\"notice\":\"Thrown when validating an inputted signature that is stale\"}]},\"events\":{\"Approval(address,address,address,uint160,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions on a token for the spender.\"},\"Lockdown(address,address,address)\":{\"notice\":\"Emits an event when the owner sets the allowance back to 0 with the lockdown function.\"},\"NonceInvalidation(address,address,address,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully invalidates an ordered nonce.\"},\"Permit(address,address,address,uint160,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"},\"allowance(address,address,address)\":{\"notice\":\"Maps users to tokens to spender addresses and information about the approval on the token\"},\"approve(address,address,uint160,uint48)\":{\"notice\":\"Approves the spender to use up to amount of the specified token up until the expiration\"},\"invalidateNonces(address,address,uint48)\":{\"notice\":\"Invalidate nonces for a given (token, spender) pair\"},\"lockdown((address,address)[])\":{\"notice\":\"Enables performing a \\\"lockdown\\\" of the sender's Permit2 identity by batch revoking approvals\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\"},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\"},\"transferFrom((address,address,uint160,address)[])\":{\"notice\":\"Transfer approved tokens in a batch\"},\"transferFrom(address,address,uint160,address)\":{\"notice\":\"Transfer approved tokens from one address to another\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/AllowanceTransfer.sol\":\"AllowanceTransfer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/AllowanceTransfer.sol\":{\"keccak256\":\"0x83a47e7841f9d285eb7f0fd977fedb808640714cb9822a104bab99fe5cbb58ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f0de543f076f8556690f236dc431277acf9c91c04916a46040194b03ea9836\",\"dweb:/ipfs/QmQ5YLFHexR2WTNXDGu4y6WjRmLPzrdH92j7NDQzT8Jevp\"]},\"permit2/src/EIP712.sol\":{\"keccak256\":\"0x973d4358c262467a4c2a0c2867c676a8a138102968d8b89355c42f655d1a7a68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7219a31ace8c0a959392cc2ee06817c7c98dfc491e96d27f71a09fb23860b62c\",\"dweb:/ipfs/QmUGRLgddHZ3GoouEBoMYbRS4wVGapJrsD2nBxVwxLBibb\"]},\"permit2/src/PermitErrors.sol\":{\"keccak256\":\"0x9fd1192bbc3ffa9354f2bfc534d7a1cdf2be2c940c96ed4ac7bc37991e1e5dfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77f8b2e2c040c33e2c78f05e7e768a17f433c07adb699235c35c4dac92115070\",\"dweb:/ipfs/QmYX2VTyTm6QLtgp54kCrkAGY8uPxkx28urwLNEJsxTHJs\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x96f516510d08da5b1d05d81b0bd88af6f9928bb757ba55c27e203654dfcd4fa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0942604688c369aed50905d7cef2ece68e1ff457c95a14c9f913babac29a09a\",\"dweb:/ipfs/Qmf4ZBYCKqQHfnACciz8GEMhwxPw7mhQ6fjGXwpgr8CQF8\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xbab1c35f0a63761be6b50a9a2ce2459b63f09587dd9c6ac46955252a1a04f43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://225dca1a3d91c0737fe75c72bfecae391fc2e7b2eb2ebe1a154bfb16a7527972\",\"dweb:/ipfs/QmdGQdUCANKZ6S23TyHDtBnGvr6CtyyqNNcziVTjEHJ5rk\"]},\"permit2/src/libraries/Allowance.sol\":{\"keccak256\":\"0x65ee20fb1a77d4e25dff2feb84027ff9096b065b6fc064c80f9eee49f1f9d498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f65d62fc64a55b6e3aad9932959ab3f47d701c45f95622215aca0ba076f1a7d\",\"dweb:/ipfs/QmZjDb4Nq9pssFefg8X9bwJNJ4RJEPD8vCaFR2Ur2N4boD\"]},\"permit2/src/libraries/PermitHash.sol\":{\"keccak256\":\"0x54af80d9c3193934c6947c31f59b8f3d7918f83676fe92ed6136593ad591d478\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5264001770be2cdeb7651e4d22af7edbc4e16da6d38747efeb4f54b5472ca5c5\",\"dweb:/ipfs/QmPvwau7DXw6stGQ14hpyTeLdYDYrrrdMnUfkQTPpMXQxz\"]},\"permit2/src/libraries/SignatureVerification.sol\":{\"keccak256\":\"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab\",\"dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"permit2/src/EIP712.sol":{"EIP712":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60c0346100b9574660a052602081017f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408301524660608301523060808301526080825260a082019180831060018060401b038411176100a3578260405251902060805261016f90816100bf8239608051816085015260a05181605b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c633644e5151461002a57600080fd5b3461015e57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015e57467f0000000000000000000000000000000000000000000000000000000000000000036100ad57505060207f00000000000000000000000000000000000000000000000000000000000000005b604051908152f35b60208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408201524660608201523060808201526080815260a0810181811067ffffffffffffffff82111761013157602093506040525190206100a5565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xC0 CALLVALUE PUSH2 0xB9 JUMPI CHAINID PUSH1 0xA0 MSTORE PUSH1 0x20 DUP2 ADD PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP2 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP4 ADD MSTORE CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x80 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP2 DUP1 DUP4 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP5 GT OR PUSH2 0xA3 JUMPI DUP3 PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE PUSH2 0x16F SWAP1 DUP2 PUSH2 0xBF DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH1 0x85 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH1 0x5B ADD MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x3644E515 EQ PUSH2 0x2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x15E JUMPI CHAINID PUSH32 0x0 SUB PUSH2 0xAD JUMPI POP POP PUSH1 0x20 PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x131 JUMPI PUSH1 0x20 SWAP4 POP PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"295:1559:41:-:0;;;;856:13;837:32;;1560:60;;;726:80;295:1559;;654:20;295:1559;;;;856:13;295:1559;;;;1614:4;295:1559;;;;;1560:60;;837:32;295:1559;;;;;;;;;;;;;;;;;;;;1550:71;;295:1559;879:74;295:1559;;;;;;;;;;;;837:32;295:1559;;;;;;;;;;-1:-1:-1;295:1559:41;;;;;-1:-1:-1;295:1559:41;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{"5847":[{"length":32,"start":133}],"5849":[{"length":32,"start":91}]},"linkReferences":{},"object":"608080604052600436101561001357600080fd5b600090813560e01c633644e5151461002a57600080fd5b3461015e57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015e57467f0000000000000000000000000000000000000000000000000000000000000000036100ad57505060207f00000000000000000000000000000000000000000000000000000000000000005b604051908152f35b60208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408201524660608201523060808201526080815260a0810181811067ffffffffffffffff82111761013157602093506040525190206100a5565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x3644E515 EQ PUSH2 0x2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x15E JUMPI CHAINID PUSH32 0x0 SUB PUSH2 0xAD JUMPI POP POP PUSH1 0x20 PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x131 JUMPI PUSH1 0x20 SWAP4 POP PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"295:1559:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:13;1215:16;1198:33;1215:16;;1246:24;;295:1559;1246:24;1198:134;295:1559;;;;;;1198:134;1560:60;;;295:1559;726:80;295:1559;;654:20;295:1559;;;;1198:13;295:1559;;;;1614:4;295:1559;;;;;1560:60;;295:1559;;;;;;;;;;;;;;;;;;1550:71;;1198:134;;295:1559;;;;;;;;;;;;;"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Maintains cross-chain replay protection in the event of a forkReference: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Uses cached version if chainid and address are unchanged from construction.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"}},\"notice\":\"EIP712 helpers for permit2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/EIP712.sol\":{\"keccak256\":\"0x973d4358c262467a4c2a0c2867c676a8a138102968d8b89355c42f655d1a7a68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7219a31ace8c0a959392cc2ee06817c7c98dfc491e96d27f71a09fb23860b62c\",\"dweb:/ipfs/QmUGRLgddHZ3GoouEBoMYbRS4wVGapJrsD2nBxVwxLBibb\"]}},\"version\":1}"}},"permit2/src/Permit2.sol":{"Permit2":{"abi":[{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"AllowanceExpired","type":"error"},{"inputs":[],"name":"ExcessiveInvalidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidContractSignature","type":"error"},{"inputs":[],"name":"InvalidNonce","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSignatureLength","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[{"internalType":"uint256","name":"signatureDeadline","type":"uint256"}],"name":"SignatureExpired","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"Lockdown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint48","name":"newNonce","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"oldNonce","type":"uint48"}],"name":"NonceInvalidation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"nonce","type":"uint48"}],"name":"Permit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"word","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mask","type":"uint256"}],"name":"UnorderedNonceInvalidation","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint48","name":"newNonce","type":"uint48"}],"name":"invalidateNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wordPos","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"}],"name":"invalidateUnorderedNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"internalType":"struct IAllowanceTransfer.TokenSpenderPair[]","name":"approvals","type":"tuple[]"}],"name":"lockdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonceBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permitBatch","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct IAllowanceTransfer.AllowanceTransferDetails[]","name":"transferDetails","type":"tuple[]"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60c0346100bb574660a052602081017f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408301524660608301523060808301526080825260a082019180831060018060401b038411176100a557826040525190206080526123ed90816100c1823960805181611a90015260a05181611a6a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fdfe6040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611edc565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611e04565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611eaf565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611c40565b80f35b8061031161030b610321938c5161175e565b51611f9d565b61031b828661175e565b52611e53565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611e04565b98885b81811061047d5750506102f697988151610425816103f9602082018095611eaf565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a61051560019388886118b5565b6118c5565b61052f84610529848a8a6118b5565b016118c5565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611a67565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351611f9d565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611b6e565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611f07565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611b22565b91612010565b51925116916118e6565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611e04565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611eaf565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b516118e6565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611f07565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611edc565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651611f9d565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926122fc565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611a3e579185611a1794927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611a1c5779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff0000000000000000000000000000000000000000876119a9565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611ab2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611b1c816113ff565b51902090565b611b2a611a67565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611b1c81611398565b9192909360a435936040840151804211611c0f5750602084510151808611611bde5750918591610d78611bae94611ba9602088015186611d90565b611b22565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936122fc565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611d605750848803611d3757611c77918691610d7860209b611ba98d88015186611d90565b60005b868110611c8b575050505050505050565b611c9681835161175e565b5188611ca383878a6118b5565b01359089810151808311611d07575091818888886001968596611ccd575b50505050505001611c7a565b611cfc95611cf69273ffffffffffffffffffffffffffffffffffffffff610515935116956118b5565b916122fc565b803888888883611cc1565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611dda57565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611e0e826115ef565b611e1b6040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611e4982946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e805760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611ec8575050505090565b835185529381019392810192600101611eba565b9081519160005b838110611ef4575050016000815290565b8060208092840101518185015201611ee3565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611b1c81611398565b919082604091031261149b576020823592013590565b6000843b6121775750604182036120f55761202d82820182611ffa565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156120e95773ffffffffffffffffffffffffffffffffffffffff80600051169182156120bf57160361209557565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b6040820361214d5761210991810190611ffa565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611e805760209360009360ff60809461204b565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156122f1578291612273575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361224957565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116122e9575b8161228d60209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff00000000000000000000000000000000000000000000000000000000903861221d565b3d9150612280565b6040513d84823e3d90fd5b92602092606491600093604051927f23b872dd00000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8092166004850152166024830152604482015282855af19081601f3d116001600051141615166123d3575b501561237557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d171590503861236d56fea164736f6c6343000811000a","opcodes":"PUSH1 0xC0 CALLVALUE PUSH2 0xBB JUMPI CHAINID PUSH1 0xA0 MSTORE PUSH1 0x20 DUP2 ADD PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP2 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP4 ADD MSTORE CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x80 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP2 DUP1 DUP4 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP5 GT OR PUSH2 0xA5 JUMPI DUP3 PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE PUSH2 0x23ED SWAP1 DUP2 PUSH2 0xC1 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x1A90 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x1A6A ADD MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 SWAP1 DUP2 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD58B1DB EQ PUSH2 0x126C JUMPI DUP1 PUSH4 0x137C29FE EQ PUSH2 0x1075 JUMPI DUP1 PUSH4 0x2A2D80D1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0x2B67B570 EQ PUSH2 0xBDE JUMPI DUP1 PUSH4 0x30F28B7A EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0xA9D JUMPI DUP1 PUSH4 0x36C78516 EQ PUSH2 0xA28 JUMPI DUP1 PUSH4 0x3FF9DCB1 EQ PUSH2 0x9A8 JUMPI DUP1 PUSH4 0x4FE02B44 EQ PUSH2 0x93F JUMPI DUP1 PUSH4 0x65D9723C EQ PUSH2 0x7AC JUMPI DUP1 PUSH4 0x87517C45 EQ PUSH2 0x67A JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x5C3 JUMPI DUP1 PUSH4 0xCC53287F EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0xEDD9444B EQ PUSH2 0x33A JUMPI PUSH4 0xFE8EC1A7 EQ PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x336 JUMPI PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x332 JUMPI PUSH2 0x114 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x164B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x32E JUMPI PUSH2 0x12B SWAP1 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0x161A JUMP JUMPDEST PUSH2 0x133 PUSH2 0x14E6 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x32A JUMPI PUSH2 0x14B SWAP1 CALLDATASIZE SWAP1 DUP11 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP9 SWAP1 SWAP6 PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x326 JUMPI PUSH2 0x164 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP2 MLOAD SWAP1 PUSH2 0x173 DUP3 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x6B DUP3 MSTORE PUSH32 0x5065726D697442617463685769746E6573735472616E7366657246726F6D2854 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6F6B656E5065726D697373696F6E735B5D207065726D69747465642C61646472 DUP4 DUP4 ADD MSTORE PUSH32 0x657373207370656E6465722C75696E74323536206E6F6E63652C75696E743235 PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x3620646561646C696E652C000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP3 MLOAD SWAP11 DUP12 SWAP2 DUP2 PUSH2 0x222 PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x1EDC JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP11 DUP2 MSTORE SUB SWAP10 PUSH2 0x25B PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP12 DUP13 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 DUP6 MLOAD MLOAD PUSH2 0x26B DUP2 PUSH2 0x1E04 JUMP JUMPDEST SWAP1 DUP11 JUMPDEST DUP2 DUP2 LT PUSH2 0x2F9 JUMPI POP POP PUSH2 0x2F6 SWAP10 SWAP11 PUSH2 0x2ED SWAP2 DUP4 MLOAD PUSH2 0x2A0 DUP2 PUSH2 0x294 PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x1EAF JUMP JUMPDEST SUB DUP5 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP10 DUP2 ADD MLOAD DUP6 DUP12 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP1 PUSH2 0x311 PUSH2 0x30B PUSH2 0x321 SWAP4 DUP13 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD PUSH2 0x1F9D JUMP JUMPDEST PUSH2 0x31B DUP3 DUP7 PUSH2 0x175E JUMP JUMPDEST MSTORE PUSH2 0x1E53 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST DUP9 DUP1 REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x332 JUMPI PUSH2 0x38B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x164B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x32E JUMPI PUSH2 0x3A2 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x161A JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0x3AD PUSH2 0x14E6 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x49F JUMPI PUSH2 0x3C4 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 DUP4 MLOAD MLOAD SWAP8 PUSH2 0x3D4 DUP10 PUSH2 0x1E04 JUMP JUMPDEST SWAP9 DUP9 JUMPDEST DUP2 DUP2 LT PUSH2 0x47D JUMPI POP POP PUSH2 0x2F6 SWAP8 SWAP9 DUP2 MLOAD PUSH2 0x425 DUP2 PUSH2 0x3F9 PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x1EAF JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP7 ADD MLOAD DUP3 DUP8 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0xFCF35F5AC6A2C28868DC44C302166470266239195F02B0EE408334829333B766 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x2ED DUP2 PUSH2 0x141B JUMP JUMPDEST DUP1 DUP12 PUSH2 0x31B DUP3 PUSH2 0x494 PUSH2 0x30B PUSH2 0x49A SWAP7 DUP14 MLOAD PUSH2 0x175E JUMP JUMPDEST SWAP3 PUSH2 0x175E JUMP JUMPDEST PUSH2 0x3D7 JUMP JUMPDEST DUP7 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x32E JUMPI PUSH2 0x4F4 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x161A JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP5 JUMPDEST DUP5 DUP2 LT PUSH2 0x504 JUMPI DUP6 DUP1 RETURN JUMPDEST DUP1 PUSH2 0x51A PUSH2 0x515 PUSH1 0x1 SWAP4 DUP9 DUP9 PUSH2 0x18B5 JUMP JUMPDEST PUSH2 0x18C5 JUMP JUMPDEST PUSH2 0x52F DUP5 PUSH2 0x529 DUP5 DUP11 DUP11 PUSH2 0x18B5 JUMP JUMPDEST ADD PUSH2 0x18C5 JUMP JUMPDEST CALLER DUP10 MSTORE DUP4 DUP6 MSTORE DUP6 DUP10 KECCAK256 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP3 DUP4 DUP12 MSTORE DUP7 MSTORE DUP7 DUP11 KECCAK256 SWAP2 AND SWAP1 DUP2 DUP11 MSTORE DUP6 MSTORE DUP6 DUP10 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 SLOAD AND SWAP1 SSTORE DUP6 MLOAD SWAP2 DUP3 MSTORE DUP5 DUP3 ADD MSTORE PUSH32 0x89B1ADD15EFF56B3DFE299AD94E01F2B52FBCB80AE1A3BAEA6AE8C04CB2B98A4 DUP6 CALLER SWAP3 LOG2 ADD PUSH2 0x4F9 JUMP JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH2 0x676 DUP2 PUSH2 0x5FF PUSH2 0x14A0 JUMP JUMPDEST SWAP4 PUSH2 0x608 PUSH2 0x14C3 JUMP JUMPDEST PUSH2 0x610 PUSH2 0x14E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE DUP5 DUP5 KECCAK256 SWAP3 DUP9 AND DUP5 MSTORE SWAP2 DUP3 MSTORE DUP4 DUP4 KECCAK256 SWAP1 DUP8 AND DUP4 MSTORE DUP2 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD SWAP3 MLOAD SWAP4 DUP4 AND DUP5 MSTORE PUSH1 0xA0 DUP4 SWAP1 SHR PUSH6 0xFFFFFFFFFFFF AND SWAP1 DUP5 ADD MSTORE PUSH1 0xD0 SWAP2 SWAP1 SWAP2 SHR PUSH1 0x40 DUP4 ADD MSTORE DUP2 SWAP1 PUSH1 0x60 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH2 0x6B2 PUSH2 0x14A0 JUMP JUMPDEST SWAP1 PUSH2 0x6BB PUSH2 0x14C3 JUMP JUMPDEST SWAP2 PUSH2 0x6C4 PUSH2 0x14E6 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF SWAP3 PUSH1 0x64 CALLDATALOAD DUP5 DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x32A JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP5 PUSH32 0xDA9FA7C1B00402C17D0161B249B1AB8BBEC047C5A52207B9C112DEFFD817036B SWAP5 CALLER DUP11 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 DUP6 DUP12 KECCAK256 SWAP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP10 DUP11 DUP14 MSTORE PUSH1 0x20 MSTORE DUP4 DUP8 DUP14 KECCAK256 SWAP12 AND SWAP11 DUP12 DUP14 MSTORE PUSH1 0x20 MSTORE DUP7 DUP13 KECCAK256 SWAP5 DUP7 ISZERO PUSH1 0x0 EQ PUSH2 0x7A4 JUMPI POP TIMESTAMP AND SWAP3 JUMPDEST DUP5 SLOAD SWAP3 AND SWAP8 DUP9 SWAP4 PUSH1 0xA0 SHL AND SWAP2 AND OR OR SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE CALLER SWAP3 LOG4 DUP1 RETURN JUMPDEST SWAP1 POP SWAP3 PUSH2 0x783 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH2 0x7E5 PUSH2 0x14A0 JUMP JUMPDEST SWAP1 PUSH2 0x7EE PUSH2 0x14C3 JUMP JUMPDEST SWAP3 PUSH6 0xFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 AND SWAP4 SWAP1 DUP5 DUP2 SUB PUSH2 0x32A JUMPI CALLER DUP9 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x1 DUP4 MSTORE DUP5 DUP10 KECCAK256 SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP8 DUP9 DUP12 MSTORE DUP5 MSTORE DUP6 DUP11 KECCAK256 SWAP9 AND SWAP8 DUP9 DUP11 MSTORE DUP4 MSTORE DUP5 DUP10 KECCAK256 SLOAD PUSH1 0xD0 SHR SWAP4 DUP5 DUP8 GT ISZERO PUSH2 0x917 JUMPI PUSH2 0xFFFF SWAP1 DUP6 DUP5 SUB AND GT PUSH2 0x8F0 JUMPI POP SWAP1 PUSH32 0x55EB90D810E1700B35A8E7E25395FF7F2B2259ABD7415CA2284DFB1C246418F3 SWAP4 SWAP3 SWAP2 CALLER DUP10 MSTORE PUSH1 0x1 DUP3 MSTORE DUP4 DUP10 KECCAK256 DUP8 DUP11 MSTORE DUP3 MSTORE DUP4 DUP10 KECCAK256 DUP9 DUP11 MSTORE DUP3 MSTORE DUP4 DUP10 KECCAK256 SWAP1 PUSH26 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xD0 SHL AND SWAP2 AND OR SWAP1 SSTORE DUP3 MLOAD SWAP5 DUP6 MSTORE DUP5 ADD MSTORE CALLER SWAP3 LOG4 DUP1 RETURN JUMPDEST DUP5 MLOAD PUSH32 0x24D35A2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP5 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI DUP1 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x98F PUSH2 0x14A0 JUMP JUMPDEST AND DUP2 MSTORE DUP1 DUP5 MSTORE DUP2 DUP2 KECCAK256 PUSH1 0x24 CALLDATALOAD DUP3 MSTORE DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH32 0x3704902F963766A4E561BBAAB6E6CDC1B1DD12F6E9E99648DA8843B3F46B918D SWAP1 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD CALLER DUP6 MSTORE DUP5 PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP2 DUP2 SLOAD OR SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE CALLER SWAP3 LOG2 DUP1 RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0xA9A JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xA9A JUMPI PUSH2 0xA60 PUSH2 0x14A0 JUMP JUMPDEST PUSH2 0xA68 PUSH2 0x14C3 JUMP JUMPDEST PUSH2 0xA70 PUSH2 0x14E6 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP4 SUB PUSH2 0x32E JUMPI PUSH2 0x2F6 SWAP4 PUSH2 0x17A1 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xAD7 PUSH2 0x1A67 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x5BF JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH2 0xB1A CALLDATASIZE PUSH2 0x152A JUMP JUMPDEST SWAP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI PUSH2 0xB4C PUSH2 0x1478 JUMP JUMPDEST SWAP2 PUSH1 0xE4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBDA JUMPI PUSH2 0x2F6 SWAP5 PUSH2 0xB6F SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0xB7C DUP4 MLOAD PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD DUP3 DUP6 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0x939C21A48A8DBE3A9A2404A1D46691E4D39F6583D6EC6B35714604C986D80106 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0xBD1 DUP2 PUSH2 0x141B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 PUSH2 0x1B6E JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x336 JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH2 0xC18 PUSH2 0x14A0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD PUSH1 0xC0 DUP2 SLT PUSH2 0x332 JUMPI PUSH1 0x80 DUP6 MLOAD SWAP2 PUSH2 0xC51 DUP4 PUSH2 0x13E3 JUMP JUMPDEST SLT PUSH2 0x332 JUMPI DUP5 MLOAD SWAP1 PUSH2 0xC62 DUP3 PUSH2 0x1398 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x49F JUMPI DUP2 MSTORE PUSH1 0x44 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x49F JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH6 0xFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x32A JUMPI DUP9 DUP4 ADD MSTORE PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x49F JUMPI PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0xA4 CALLDATALOAD SWAP4 DUP3 DUP6 AND DUP6 SUB PUSH2 0xBDA JUMPI PUSH1 0x20 DUP3 ADD SWAP5 DUP6 MSTORE PUSH1 0xC4 CALLDATALOAD SWAP1 DUP8 DUP4 ADD DUP3 DUP2 MSTORE PUSH1 0xE4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x326 JUMPI PUSH2 0xCFE SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 DUP1 TIMESTAMP GT PUSH2 0xD88 JUMPI POP POP SWAP2 DUP6 SWAP2 PUSH2 0xD78 PUSH2 0x2F6 SWAP10 SWAP11 PUSH2 0xD7E SWAP6 PUSH2 0xD23 DUP9 MLOAD PUSH2 0x1F07 JUMP JUMPDEST SWAP1 DUP10 DUP13 MLOAD AND SWAP1 MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0xF3841CD1FF0085026A6327B620B67997CE40F282C88A8E905A7A5626E310F3D0 DUP7 MSTORE DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0xD70 DUP2 PUSH2 0x13FF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x1B22 JUMP JUMPDEST SWAP2 PUSH2 0x2010 JUMP JUMPDEST MLOAD SWAP3 MLOAD AND SWAP2 PUSH2 0x18E6 JUMP JUMPDEST PUSH1 0x24 SWAP3 POP DUP11 MLOAD SWAP2 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC SWAP4 DUP2 DUP6 CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI PUSH2 0xDF3 PUSH2 0x14A0 JUMP JUMPDEST SWAP3 PUSH1 0x24 SWAP1 DUP2 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP8 DUP9 DUP6 GT PUSH2 0x32A JUMPI DUP6 SWAP1 DUP6 CALLDATASIZE SUB ADD SLT PUSH2 0x49F JUMPI DUP1 MLOAD SWAP8 DUP6 DUP10 ADD DUP10 DUP2 LT DUP3 DUP3 GT OR PUSH2 0x104A JUMPI DUP3 MSTORE DUP5 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x326 JUMPI DUP6 ADD SWAP1 CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x326 JUMPI DUP4 DUP3 ADD CALLDATALOAD SWAP2 PUSH2 0xE50 DUP4 PUSH2 0x15EF JUMP JUMPDEST SWAP1 PUSH2 0xE5D DUP6 MLOAD SWAP3 DUP4 PUSH2 0x1437 JUMP JUMPDEST DUP4 DUP3 MSTORE PUSH1 0x20 SWAP4 DUP8 DUP6 DUP5 ADD SWAP2 PUSH1 0x7 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x1046 JUMPI DUP9 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xFE9 JUMPI POP POP POP DUP11 MSTORE PUSH1 0x44 PUSH2 0xE93 DUP7 DUP9 ADD PUSH2 0x1509 JUMP JUMPDEST SWAP7 DUP4 DUP13 ADD SWAP8 DUP9 MSTORE ADD CALLDATALOAD SWAP5 DUP4 DUP12 ADD SWAP2 DUP7 DUP4 MSTORE PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0xFE5 JUMPI PUSH2 0xEBB SWAP1 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP6 SWAP1 SWAP7 DUP1 TIMESTAMP GT PUSH2 0xFBA JUMPI POP POP POP DUP10 SWAP9 SWAP10 MLOAD MLOAD PUSH2 0xED6 DUP2 PUSH2 0x1E04 JUMP JUMPDEST SWAP1 DUP12 JUMPDEST DUP2 DUP2 LT PUSH2 0xF97 JUMPI POP POP SWAP3 DUP9 SWAP5 SWAP3 PUSH2 0xD78 SWAP3 PUSH2 0xF64 SWAP8 SWAP6 DUP4 MLOAD PUSH2 0xF02 DUP2 PUSH2 0x3F9 DUP7 DUP3 ADD DUP1 SWAP6 PUSH2 0x1EAF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP11 DUP12 DUP12 MLOAD AND SWAP2 MLOAD SWAP3 DUP6 MLOAD SWAP5 DUP6 ADD SWAP6 PUSH32 0xAF1B0D30D2CAB0380E68F0689007E3254993C596F2FDD0AAA7F4D04F79440863 DUP8 MSTORE DUP6 ADD MSTORE DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0xD70 DUP2 PUSH2 0x13FF JUMP JUMPDEST MLOAD AND SWAP1 DUP3 MLOAD MLOAD SWAP3 DUP5 JUMPDEST DUP5 DUP2 LT PUSH2 0xF78 JUMPI DUP6 DUP1 RETURN JUMPDEST DUP1 PUSH2 0xF91 DUP6 DUP6 PUSH2 0xF8B PUSH1 0x1 SWAP6 DUP8 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD PUSH2 0x18E6 JUMP JUMPDEST ADD PUSH2 0xF6D JUMP JUMPDEST DUP1 PUSH2 0x311 PUSH2 0xFAC DUP15 SWAP16 SWAP15 SWAP4 PUSH2 0xFB2 SWAP5 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD PUSH2 0x1F07 JUMP JUMPDEST SWAP12 SWAP11 SWAP12 PUSH2 0xED9 JUMP JUMPDEST DUP6 MLOAD SWAP2 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST DUP11 DUP1 REVERT JUMPDEST PUSH1 0x80 DUP3 CALLDATASIZE SUB SLT PUSH2 0x1046 JUMPI DUP6 PUSH1 0x80 SWAP2 DUP9 MLOAD PUSH2 0x1002 DUP2 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x100B DUP6 PUSH2 0x1509 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1018 DUP4 DUP7 ADD PUSH2 0x1509 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0x1027 DUP11 DUP7 ADD PUSH2 0x1607 JUMP JUMPDEST DUP11 DUP3 ADD MSTORE DUP14 PUSH2 0x1037 DUP2 DUP8 ADD PUSH2 0x1607 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xE7A JUMP JUMPDEST DUP13 DUP1 REVERT JUMPDEST DUP5 DUP10 PUSH1 0x41 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH2 0x140 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH2 0x10B0 CALLDATASIZE PUSH2 0x152A JUMP JUMPDEST SWAP2 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI PUSH2 0x10E2 PUSH2 0x1478 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 SWAP1 PUSH2 0x104 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x49F JUMPI PUSH2 0x1105 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP1 SWAP4 PUSH2 0x124 CALLDATALOAD SWAP7 DUP8 GT PUSH2 0x32A JUMPI PUSH2 0x1125 PUSH2 0xBD1 SWAP7 PUSH2 0x2F6 SWAP9 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP3 MLOAD SWAP1 PUSH2 0x1134 DUP3 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x64 DUP3 MSTORE PUSH32 0x5065726D69745769746E6573735472616E7366657246726F6D28546F6B656E50 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x65726D697373696F6E73207065726D69747465642C6164647265737320737065 DUP5 DUP4 ADD MSTORE PUSH32 0x6E6465722C75696E74323536206E6F6E63652C75696E7432353620646561646C PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x696E652C00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP4 MLOAD SWAP5 DUP6 SWAP2 DUP2 PUSH2 0x11E3 PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x1EDC JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP12 DUP2 MSTORE SUB SWAP4 PUSH2 0x121C PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 PUSH2 0x122A DUP7 MLOAD PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0x20 DUP8 DUP2 ADD MLOAD DUP6 DUP10 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD PUSH2 0x2E1 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP3 GT PUSH2 0xBDA JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0xBDA JUMPI DUP2 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x32E JUMPI PUSH1 0x24 SWAP1 PUSH1 0x7 CALLDATASIZE DUP4 DUP7 DUP4 SHL DUP5 ADD ADD GT PUSH2 0x49F JUMPI DUP7 JUMPDEST DUP6 DUP2 LT PUSH2 0x12E5 JUMPI DUP8 DUP1 RETURN JUMPDEST DUP1 DUP3 SHL DUP4 ADD SWAP1 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x326 JUMPI PUSH2 0x1392 DUP9 DUP8 PUSH1 0x1 SWAP5 PUSH1 0x60 DUP4 MLOAD PUSH2 0x132C DUP2 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x1368 PUSH1 0x84 PUSH2 0x133C DUP14 DUP7 ADD PUSH2 0x1509 JUMP JUMPDEST SWAP5 DUP6 DUP5 MSTORE PUSH2 0x134C PUSH1 0x44 DUP3 ADD PUSH2 0x1509 JUMP JUMPDEST DUP1 SWAP8 DUP6 ADD MSTORE PUSH2 0x135D PUSH1 0x64 DUP3 ADD PUSH2 0x1509 JUMP JUMPDEST DUP1 SWAP9 DUP6 ADD MSTORE ADD PUSH2 0x1509 JUMP JUMPDEST SWAP2 DUP3 SWAP2 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 DUP1 SWAP4 AND SWAP6 AND SWAP4 AND SWAP2 AND PUSH2 0x17A1 JUMP JUMPDEST ADD PUSH2 0x12DA JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD SWAP1 PUSH1 0x80 DUP3 SLT PUSH2 0x149B JUMPI PUSH1 0x40 DUP1 MLOAD SWAP1 PUSH2 0x1563 DUP3 PUSH2 0x13E3 JUMP JUMPDEST DUP1 DUP3 SWAP5 SLT PUSH2 0x149B JUMPI DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI DUP3 MSTORE PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x149B JUMPI DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x149B JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x149B JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x13B4 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x149B JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x149B JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x149B JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x149B JUMPI PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0x1666 DUP4 PUSH2 0x13E3 JUMP JUMPDEST DUP3 SWAP5 DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x149B JUMPI DUP4 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x149B JUMPI DUP1 CALLDATALOAD PUSH2 0x1693 DUP2 PUSH2 0x15EF JUMP JUMPDEST SWAP3 PUSH2 0x16A0 DUP8 MLOAD SWAP5 DUP6 PUSH2 0x1437 JUMP JUMPDEST DUP2 DUP5 MSTORE PUSH1 0x20 SWAP5 DUP6 DUP1 DUP7 ADD SWAP4 PUSH1 0x6 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x149B JUMPI SWAP1 DUP7 DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 ADD SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x16E3 JUMPI POP POP POP POP POP DUP6 MSTORE DUP1 DUP3 ADD CALLDATALOAD SWAP1 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 DUP5 DUP4 SUB SLT PUSH2 0x149B JUMPI DUP9 MLOAD SWAP1 DUP10 DUP3 ADD SWAP1 DUP3 DUP3 LT DUP6 DUP4 GT OR PUSH2 0x1730 JUMPI DUP11 SWAP3 DUP10 SWAP3 DUP5 MSTORE PUSH2 0x1714 DUP8 PUSH2 0x1509 JUMP JUMPDEST DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP2 SWAP1 DUP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0x24 PUSH1 0x0 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 DUP3 DUP5 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP3 DUP3 DUP3 KECCAK256 SWAP7 AND SWAP6 DUP7 DUP3 MSTORE PUSH1 0x20 MSTORE DUP2 DUP2 KECCAK256 CALLER DUP3 MSTORE PUSH1 0x20 MSTORE KECCAK256 SWAP5 DUP6 SLOAD SWAP6 PUSH6 0xFFFFFFFFFFFF DUP8 PUSH1 0xA0 SHR AND DUP1 TIMESTAMP GT PUSH2 0x1884 JUMPI POP DUP3 DUP8 AND SWAP7 DUP4 DUP9 SUB PUSH2 0x1812 JUMPI JUMPDEST POP POP PUSH2 0x1810 SWAP6 POP AND SWAP3 PUSH2 0x22FC JUMP JUMPDEST JUMP JUMPDEST DUP8 DUP5 DUP5 AND GT PUSH1 0x0 EQ PUSH2 0x184F JUMPI PUSH1 0x24 DUP9 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xF96FB07100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP5 DUP5 PUSH2 0x1810 SWAP11 SUB AND SWAP2 AND OR SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x1802 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD81B2F2E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x149B JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0x60 DUP5 ADD MLOAD AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP6 MLOAD AND SWAP5 DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND SWAP3 DUP1 DUP7 PUSH1 0x40 DUP1 SWAP5 ADD MLOAD AND SWAP6 AND SWAP6 PUSH1 0x0 SWAP2 DUP8 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 DUP10 DUP5 MSTORE PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 SWAP10 AND SWAP9 DUP10 DUP4 MSTORE PUSH1 0x20 MSTORE DUP3 DUP3 KECCAK256 SWAP2 DUP5 DUP4 SLOAD PUSH1 0xD0 SHR SUB PUSH2 0x1A3E JUMPI SWAP2 DUP6 PUSH2 0x1A17 SWAP5 SWAP3 PUSH32 0xC6A377BFC4EB120024A8AC08EEF205BE16B817020812C73223E81D1BDB9708EC SWAP9 SWAP8 SWAP7 SWAP5 POP DUP8 ISZERO PUSH1 0x0 EQ PUSH2 0x1A1C JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 TIMESTAMP AND JUMPDEST PUSH1 0xA0 SHL AND PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP7 ADD PUSH1 0xD0 SHL AND OR OR SWAP1 SSTORE MLOAD SWAP4 DUP5 SWAP4 DUP5 SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP6 ADD SWAP7 AND DUP5 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST POP PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP8 PUSH2 0x19A9 JUMP JUMPDEST PUSH1 0x4 DUP5 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CHAINID PUSH32 0x0 SUB PUSH2 0x1AB2 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x1B1C DUP2 PUSH2 0x13FF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1B2A PUSH2 0x1A67 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x1B1C DUP2 PUSH2 0x1398 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP4 PUSH1 0x40 DUP5 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0x1C0F JUMPI POP PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP1 DUP7 GT PUSH2 0x1BDE JUMPI POP SWAP2 DUP6 SWAP2 PUSH2 0xD78 PUSH2 0x1BAE SWAP5 PUSH2 0x1BA9 PUSH1 0x20 DUP9 ADD MLOAD DUP7 PUSH2 0x1D90 JUMP JUMPDEST PUSH2 0x1B22 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 MLOAD MLOAD AND SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI PUSH2 0x1810 SWAP4 PUSH2 0x22FC JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP6 SWAP1 SWAP4 SWAP6 DUP1 MLOAD MLOAD SWAP6 PUSH1 0x40 SWAP3 DUP4 DUP4 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0x1D60 JUMPI POP DUP5 DUP9 SUB PUSH2 0x1D37 JUMPI PUSH2 0x1C77 SWAP2 DUP7 SWAP2 PUSH2 0xD78 PUSH1 0x20 SWAP12 PUSH2 0x1BA9 DUP14 DUP9 ADD MLOAD DUP7 PUSH2 0x1D90 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 DUP2 LT PUSH2 0x1C8B JUMPI POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C96 DUP2 DUP4 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD DUP9 PUSH2 0x1CA3 DUP4 DUP8 DUP11 PUSH2 0x18B5 JUMP JUMPDEST ADD CALLDATALOAD SWAP1 DUP10 DUP2 ADD MLOAD DUP1 DUP4 GT PUSH2 0x1D07 JUMPI POP SWAP2 DUP2 DUP9 DUP9 DUP9 PUSH1 0x1 SWAP7 DUP6 SWAP7 PUSH2 0x1CCD JUMPI JUMPDEST POP POP POP POP POP POP ADD PUSH2 0x1C7A JUMP JUMPDEST PUSH2 0x1CFC SWAP6 PUSH2 0x1CF6 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x515 SWAP4 MLOAD AND SWAP6 PUSH2 0x18B5 JUMP JUMPDEST SWAP2 PUSH2 0x22FC JUMP JUMPDEST DUP1 CODESIZE DUP9 DUP9 DUP9 DUP4 PUSH2 0x1CC1 JUMP JUMPDEST PUSH1 0x24 SWAP1 DUP7 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 MLOAD PUSH32 0xFF633A3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 DUP6 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SHR PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD XOR DUP1 SWAP2 SSTORE AND ISZERO PUSH2 0x1DDA JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x1E0E DUP3 PUSH2 0x15EF JUMP JUMPDEST PUSH2 0x1E1B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1437 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1E49 DUP3 SWAP5 PUSH2 0x15EF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1E80 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 SWAP3 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1EC8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1EBA JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x1EF4 JUMPI POP POP ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP2 DUP6 ADD MSTORE ADD PUSH2 0x1EE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x65626CAD6CB96493BF6F5EBEA28756C966F023AB9E8A83A7101849D5573B3678 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x60 PUSH6 0xFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP3 PUSH32 0x618358AC3DB8DC274F0CD8829DA7E234BD48CD73C4A740AEDE1ADEC9846D06A1 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0x1B1C DUP2 PUSH2 0x1398 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x149B JUMPI PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 EXTCODESIZE PUSH2 0x2177 JUMPI POP PUSH1 0x41 DUP3 SUB PUSH2 0x20F5 JUMPI PUSH2 0x202D DUP3 DUP3 ADD DUP3 PUSH2 0x1FFA JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x40 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x40 PUSH1 0x80 SWAP6 ADD CALLDATALOAD PUSH1 0xF8 SHR JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x20E9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x0 MLOAD AND SWAP2 DUP3 ISZERO PUSH2 0x20BF JUMPI AND SUB PUSH2 0x2095 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP3 SUB PUSH2 0x214D JUMPI PUSH2 0x2109 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1FFA JUMP JUMPDEST SWAP2 PUSH1 0x1B PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 PUSH1 0xFF SHR ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x1E80 JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x80 SWAP5 PUSH2 0x204B JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4BE6321B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP3 SWAP4 SWAP2 PUSH1 0x1F SWAP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x64 PUSH1 0x20 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP15 DUP16 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP8 ADD MSTORE DUP2 PUSH1 0x44 DUP8 ADD MSTORE DUP7 DUP7 ADD CALLDATACOPY DUP12 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x22F1 JUMPI DUP3 SWAP2 PUSH2 0x2273 JUMPI JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 POP AND SUB PUSH2 0x2249 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB0669CBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x22E9 JUMPI JUMPDEST DUP2 PUSH2 0x228D PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1437 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x336 JUMPI MLOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0xA9A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 CODESIZE PUSH2 0x221D JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2280 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x64 SWAP2 PUSH1 0x0 SWAP4 PUSH1 0x40 MLOAD SWAP3 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x23D3 JUMPI JUMPDEST POP ISZERO PUSH2 0x2375 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x236D JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"385:152:42:-:0;;;;856:13:41;837:32;;1560:60;;;726:80;385:152:42;;654:20:41;385:152:42;;;;856:13:41;385:152:42;;;;1614:4:41;385:152:42;;;;;1560:60:41;;837:32;385:152:42;;;;;;;;;;;;;;;;;;;;1550:71:41;;385:152:42;879:74:41;385:152:42;;;;;;;;;;;;837:32:41;385:152:42;;;;;;;;;;-1:-1:-1;385:152:42;;;;;-1:-1:-1;385:152:42;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":5385,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_address_13101":{"entryPoint":5240,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_13104":{"entryPoint":5280,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_13115":{"entryPoint":5315,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_13128":{"entryPoint":5350,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_struct_TokenSpenderPair_calldata_dyn_calldata":{"entryPoint":5658,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes32t_bytes32":{"entryPoint":8186,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_string_calldata":{"entryPoint":5569,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_struct_PermitBatchTransferFrom":{"entryPoint":5707,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_PermitTransferFrom":{"entryPoint":5418,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint48":{"entryPoint":5639,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_array_bytes32_dyn":{"entryPoint":7855,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_bytes32_address_uint256_uint256_bytes32":{"entryPoint":null,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_string":{"entryPoint":7900,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint160_uint48_uint48":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_and_zero_memory_array_array_bytes32_dyn":{"entryPoint":7684,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_struct_PermitDetails_dyn":{"entryPoint":5615,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_struct_TokenSpenderPair_calldata_dyn_calldata":{"entryPoint":6325,"id":null,"parameterSlots":3,"returnSlots":1},"finalize_allocation":{"entryPoint":5175,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_13099":{"entryPoint":5016,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_13107":{"entryPoint":5091,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_19095":{"entryPoint":5119,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_19102":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_21924":{"entryPoint":5147,"id":null,"parameterSlots":1,"returnSlots":0},"fun_DOMAIN_SEPARATOR":{"entryPoint":6759,"id":5893,"parameterSlots":0,"returnSlots":1},"fun_hashPermitDetails":{"entryPoint":7943,"id":7246,"parameterSlots":1,"returnSlots":1},"fun_hashTokenPermissions":{"entryPoint":8093,"id":7263,"parameterSlots":1,"returnSlots":1},"fun_hashTypedData":{"entryPoint":6946,"id":5937,"parameterSlots":1,"returnSlots":1},"fun_permitTransferFrom":{"entryPoint":7232,"id":6303,"parameterSlots":7,"returnSlots":0},"fun_permitTransferFrom_13103":{"entryPoint":7022,"id":6131,"parameterSlots":5,"returnSlots":0},"fun_safeTransferFrom":{"entryPoint":8956,"id":9139,"parameterSlots":4,"returnSlots":0},"fun_transfer":{"entryPoint":6049,"id":5641,"parameterSlots":4,"returnSlots":0},"fun_updateApproval":{"entryPoint":6374,"id":5841,"parameterSlots":3,"returnSlots":0},"fun_useUnorderedNonce":{"entryPoint":7568,"id":6397,"parameterSlots":2,"returnSlots":0},"fun_verify":{"entryPoint":8208,"id":7463,"parameterSlots":4,"returnSlots":0},"increment_uint256":{"entryPoint":7763,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_struct_PermitDetails_dyn":{"entryPoint":5982,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":6341,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"5847":[{"length":32,"start":6800}],"5849":[{"length":32,"start":6762}]},"linkReferences":{},"object":"6040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611edc565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611e04565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611eaf565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611c40565b80f35b8061031161030b610321938c5161175e565b51611f9d565b61031b828661175e565b52611e53565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611e04565b98885b81811061047d5750506102f697988151610425816103f9602082018095611eaf565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a61051560019388886118b5565b6118c5565b61052f84610529848a8a6118b5565b016118c5565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611a67565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351611f9d565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611b6e565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611f07565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611b22565b91612010565b51925116916118e6565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611e04565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611eaf565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b516118e6565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611f07565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611edc565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651611f9d565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926122fc565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611a3e579185611a1794927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611a1c5779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff0000000000000000000000000000000000000000876119a9565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611ab2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611b1c816113ff565b51902090565b611b2a611a67565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611b1c81611398565b9192909360a435936040840151804211611c0f5750602084510151808611611bde5750918591610d78611bae94611ba9602088015186611d90565b611b22565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936122fc565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611d605750848803611d3757611c77918691610d7860209b611ba98d88015186611d90565b60005b868110611c8b575050505050505050565b611c9681835161175e565b5188611ca383878a6118b5565b01359089810151808311611d07575091818888886001968596611ccd575b50505050505001611c7a565b611cfc95611cf69273ffffffffffffffffffffffffffffffffffffffff610515935116956118b5565b916122fc565b803888888883611cc1565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611dda57565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611e0e826115ef565b611e1b6040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611e4982946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e805760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611ec8575050505090565b835185529381019392810192600101611eba565b9081519160005b838110611ef4575050016000815290565b8060208092840101518185015201611ee3565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611b1c81611398565b919082604091031261149b576020823592013590565b6000843b6121775750604182036120f55761202d82820182611ffa565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156120e95773ffffffffffffffffffffffffffffffffffffffff80600051169182156120bf57160361209557565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b6040820361214d5761210991810190611ffa565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611e805760209360009360ff60809461204b565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156122f1578291612273575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361224957565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116122e9575b8161228d60209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff00000000000000000000000000000000000000000000000000000000903861221d565b3d9150612280565b6040513d84823e3d90fd5b92602092606491600093604051927f23b872dd00000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8092166004850152166024830152604482015282855af19081601f3d116001600051141615166123d3575b501561237557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d171590503861236d56fea164736f6c6343000811000a","opcodes":"PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 SWAP1 DUP2 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD58B1DB EQ PUSH2 0x126C JUMPI DUP1 PUSH4 0x137C29FE EQ PUSH2 0x1075 JUMPI DUP1 PUSH4 0x2A2D80D1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0x2B67B570 EQ PUSH2 0xBDE JUMPI DUP1 PUSH4 0x30F28B7A EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0xA9D JUMPI DUP1 PUSH4 0x36C78516 EQ PUSH2 0xA28 JUMPI DUP1 PUSH4 0x3FF9DCB1 EQ PUSH2 0x9A8 JUMPI DUP1 PUSH4 0x4FE02B44 EQ PUSH2 0x93F JUMPI DUP1 PUSH4 0x65D9723C EQ PUSH2 0x7AC JUMPI DUP1 PUSH4 0x87517C45 EQ PUSH2 0x67A JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x5C3 JUMPI DUP1 PUSH4 0xCC53287F EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0xEDD9444B EQ PUSH2 0x33A JUMPI PUSH4 0xFE8EC1A7 EQ PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x336 JUMPI PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x332 JUMPI PUSH2 0x114 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x164B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x32E JUMPI PUSH2 0x12B SWAP1 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0x161A JUMP JUMPDEST PUSH2 0x133 PUSH2 0x14E6 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x32A JUMPI PUSH2 0x14B SWAP1 CALLDATASIZE SWAP1 DUP11 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP9 SWAP1 SWAP6 PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x326 JUMPI PUSH2 0x164 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP2 MLOAD SWAP1 PUSH2 0x173 DUP3 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x6B DUP3 MSTORE PUSH32 0x5065726D697442617463685769746E6573735472616E7366657246726F6D2854 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6F6B656E5065726D697373696F6E735B5D207065726D69747465642C61646472 DUP4 DUP4 ADD MSTORE PUSH32 0x657373207370656E6465722C75696E74323536206E6F6E63652C75696E743235 PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x3620646561646C696E652C000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP3 MLOAD SWAP11 DUP12 SWAP2 DUP2 PUSH2 0x222 PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x1EDC JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP11 DUP2 MSTORE SUB SWAP10 PUSH2 0x25B PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP12 DUP13 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 DUP6 MLOAD MLOAD PUSH2 0x26B DUP2 PUSH2 0x1E04 JUMP JUMPDEST SWAP1 DUP11 JUMPDEST DUP2 DUP2 LT PUSH2 0x2F9 JUMPI POP POP PUSH2 0x2F6 SWAP10 SWAP11 PUSH2 0x2ED SWAP2 DUP4 MLOAD PUSH2 0x2A0 DUP2 PUSH2 0x294 PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x1EAF JUMP JUMPDEST SUB DUP5 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP10 DUP2 ADD MLOAD DUP6 DUP12 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP1 PUSH2 0x311 PUSH2 0x30B PUSH2 0x321 SWAP4 DUP13 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD PUSH2 0x1F9D JUMP JUMPDEST PUSH2 0x31B DUP3 DUP7 PUSH2 0x175E JUMP JUMPDEST MSTORE PUSH2 0x1E53 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST DUP9 DUP1 REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x332 JUMPI PUSH2 0x38B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x164B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x32E JUMPI PUSH2 0x3A2 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x161A JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0x3AD PUSH2 0x14E6 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x49F JUMPI PUSH2 0x3C4 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 DUP4 MLOAD MLOAD SWAP8 PUSH2 0x3D4 DUP10 PUSH2 0x1E04 JUMP JUMPDEST SWAP9 DUP9 JUMPDEST DUP2 DUP2 LT PUSH2 0x47D JUMPI POP POP PUSH2 0x2F6 SWAP8 SWAP9 DUP2 MLOAD PUSH2 0x425 DUP2 PUSH2 0x3F9 PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x1EAF JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP7 ADD MLOAD DUP3 DUP8 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0xFCF35F5AC6A2C28868DC44C302166470266239195F02B0EE408334829333B766 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x2ED DUP2 PUSH2 0x141B JUMP JUMPDEST DUP1 DUP12 PUSH2 0x31B DUP3 PUSH2 0x494 PUSH2 0x30B PUSH2 0x49A SWAP7 DUP14 MLOAD PUSH2 0x175E JUMP JUMPDEST SWAP3 PUSH2 0x175E JUMP JUMPDEST PUSH2 0x3D7 JUMP JUMPDEST DUP7 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x32E JUMPI PUSH2 0x4F4 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x161A JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP5 JUMPDEST DUP5 DUP2 LT PUSH2 0x504 JUMPI DUP6 DUP1 RETURN JUMPDEST DUP1 PUSH2 0x51A PUSH2 0x515 PUSH1 0x1 SWAP4 DUP9 DUP9 PUSH2 0x18B5 JUMP JUMPDEST PUSH2 0x18C5 JUMP JUMPDEST PUSH2 0x52F DUP5 PUSH2 0x529 DUP5 DUP11 DUP11 PUSH2 0x18B5 JUMP JUMPDEST ADD PUSH2 0x18C5 JUMP JUMPDEST CALLER DUP10 MSTORE DUP4 DUP6 MSTORE DUP6 DUP10 KECCAK256 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP3 DUP4 DUP12 MSTORE DUP7 MSTORE DUP7 DUP11 KECCAK256 SWAP2 AND SWAP1 DUP2 DUP11 MSTORE DUP6 MSTORE DUP6 DUP10 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 SLOAD AND SWAP1 SSTORE DUP6 MLOAD SWAP2 DUP3 MSTORE DUP5 DUP3 ADD MSTORE PUSH32 0x89B1ADD15EFF56B3DFE299AD94E01F2B52FBCB80AE1A3BAEA6AE8C04CB2B98A4 DUP6 CALLER SWAP3 LOG2 ADD PUSH2 0x4F9 JUMP JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH2 0x676 DUP2 PUSH2 0x5FF PUSH2 0x14A0 JUMP JUMPDEST SWAP4 PUSH2 0x608 PUSH2 0x14C3 JUMP JUMPDEST PUSH2 0x610 PUSH2 0x14E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE DUP5 DUP5 KECCAK256 SWAP3 DUP9 AND DUP5 MSTORE SWAP2 DUP3 MSTORE DUP4 DUP4 KECCAK256 SWAP1 DUP8 AND DUP4 MSTORE DUP2 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD SWAP3 MLOAD SWAP4 DUP4 AND DUP5 MSTORE PUSH1 0xA0 DUP4 SWAP1 SHR PUSH6 0xFFFFFFFFFFFF AND SWAP1 DUP5 ADD MSTORE PUSH1 0xD0 SWAP2 SWAP1 SWAP2 SHR PUSH1 0x40 DUP4 ADD MSTORE DUP2 SWAP1 PUSH1 0x60 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH2 0x6B2 PUSH2 0x14A0 JUMP JUMPDEST SWAP1 PUSH2 0x6BB PUSH2 0x14C3 JUMP JUMPDEST SWAP2 PUSH2 0x6C4 PUSH2 0x14E6 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF SWAP3 PUSH1 0x64 CALLDATALOAD DUP5 DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x32A JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP5 PUSH32 0xDA9FA7C1B00402C17D0161B249B1AB8BBEC047C5A52207B9C112DEFFD817036B SWAP5 CALLER DUP11 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 DUP6 DUP12 KECCAK256 SWAP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP10 DUP11 DUP14 MSTORE PUSH1 0x20 MSTORE DUP4 DUP8 DUP14 KECCAK256 SWAP12 AND SWAP11 DUP12 DUP14 MSTORE PUSH1 0x20 MSTORE DUP7 DUP13 KECCAK256 SWAP5 DUP7 ISZERO PUSH1 0x0 EQ PUSH2 0x7A4 JUMPI POP TIMESTAMP AND SWAP3 JUMPDEST DUP5 SLOAD SWAP3 AND SWAP8 DUP9 SWAP4 PUSH1 0xA0 SHL AND SWAP2 AND OR OR SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE CALLER SWAP3 LOG4 DUP1 RETURN JUMPDEST SWAP1 POP SWAP3 PUSH2 0x783 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH2 0x7E5 PUSH2 0x14A0 JUMP JUMPDEST SWAP1 PUSH2 0x7EE PUSH2 0x14C3 JUMP JUMPDEST SWAP3 PUSH6 0xFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 AND SWAP4 SWAP1 DUP5 DUP2 SUB PUSH2 0x32A JUMPI CALLER DUP9 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x1 DUP4 MSTORE DUP5 DUP10 KECCAK256 SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP8 DUP9 DUP12 MSTORE DUP5 MSTORE DUP6 DUP11 KECCAK256 SWAP9 AND SWAP8 DUP9 DUP11 MSTORE DUP4 MSTORE DUP5 DUP10 KECCAK256 SLOAD PUSH1 0xD0 SHR SWAP4 DUP5 DUP8 GT ISZERO PUSH2 0x917 JUMPI PUSH2 0xFFFF SWAP1 DUP6 DUP5 SUB AND GT PUSH2 0x8F0 JUMPI POP SWAP1 PUSH32 0x55EB90D810E1700B35A8E7E25395FF7F2B2259ABD7415CA2284DFB1C246418F3 SWAP4 SWAP3 SWAP2 CALLER DUP10 MSTORE PUSH1 0x1 DUP3 MSTORE DUP4 DUP10 KECCAK256 DUP8 DUP11 MSTORE DUP3 MSTORE DUP4 DUP10 KECCAK256 DUP9 DUP11 MSTORE DUP3 MSTORE DUP4 DUP10 KECCAK256 SWAP1 PUSH26 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xD0 SHL AND SWAP2 AND OR SWAP1 SSTORE DUP3 MLOAD SWAP5 DUP6 MSTORE DUP5 ADD MSTORE CALLER SWAP3 LOG4 DUP1 RETURN JUMPDEST DUP5 MLOAD PUSH32 0x24D35A2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP5 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI DUP1 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x98F PUSH2 0x14A0 JUMP JUMPDEST AND DUP2 MSTORE DUP1 DUP5 MSTORE DUP2 DUP2 KECCAK256 PUSH1 0x24 CALLDATALOAD DUP3 MSTORE DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH32 0x3704902F963766A4E561BBAAB6E6CDC1B1DD12F6E9E99648DA8843B3F46B918D SWAP1 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD CALLER DUP6 MSTORE DUP5 PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP2 DUP2 SLOAD OR SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE CALLER SWAP3 LOG2 DUP1 RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0xA9A JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xA9A JUMPI PUSH2 0xA60 PUSH2 0x14A0 JUMP JUMPDEST PUSH2 0xA68 PUSH2 0x14C3 JUMP JUMPDEST PUSH2 0xA70 PUSH2 0x14E6 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP4 SUB PUSH2 0x32E JUMPI PUSH2 0x2F6 SWAP4 PUSH2 0x17A1 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x336 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xAD7 PUSH2 0x1A67 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x5BF JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH2 0xB1A CALLDATASIZE PUSH2 0x152A JUMP JUMPDEST SWAP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI PUSH2 0xB4C PUSH2 0x1478 JUMP JUMPDEST SWAP2 PUSH1 0xE4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBDA JUMPI PUSH2 0x2F6 SWAP5 PUSH2 0xB6F SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0xB7C DUP4 MLOAD PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD DUP3 DUP6 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0x939C21A48A8DBE3A9A2404A1D46691E4D39F6583D6EC6B35714604C986D80106 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0xBD1 DUP2 PUSH2 0x141B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 PUSH2 0x1B6E JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x336 JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x336 JUMPI PUSH2 0xC18 PUSH2 0x14A0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD PUSH1 0xC0 DUP2 SLT PUSH2 0x332 JUMPI PUSH1 0x80 DUP6 MLOAD SWAP2 PUSH2 0xC51 DUP4 PUSH2 0x13E3 JUMP JUMPDEST SLT PUSH2 0x332 JUMPI DUP5 MLOAD SWAP1 PUSH2 0xC62 DUP3 PUSH2 0x1398 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x49F JUMPI DUP2 MSTORE PUSH1 0x44 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x49F JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH6 0xFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x32A JUMPI DUP9 DUP4 ADD MSTORE PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x49F JUMPI PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0xA4 CALLDATALOAD SWAP4 DUP3 DUP6 AND DUP6 SUB PUSH2 0xBDA JUMPI PUSH1 0x20 DUP3 ADD SWAP5 DUP6 MSTORE PUSH1 0xC4 CALLDATALOAD SWAP1 DUP8 DUP4 ADD DUP3 DUP2 MSTORE PUSH1 0xE4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x326 JUMPI PUSH2 0xCFE SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 DUP1 TIMESTAMP GT PUSH2 0xD88 JUMPI POP POP SWAP2 DUP6 SWAP2 PUSH2 0xD78 PUSH2 0x2F6 SWAP10 SWAP11 PUSH2 0xD7E SWAP6 PUSH2 0xD23 DUP9 MLOAD PUSH2 0x1F07 JUMP JUMPDEST SWAP1 DUP10 DUP13 MLOAD AND SWAP1 MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0xF3841CD1FF0085026A6327B620B67997CE40F282C88A8E905A7A5626E310F3D0 DUP7 MSTORE DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0xD70 DUP2 PUSH2 0x13FF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x1B22 JUMP JUMPDEST SWAP2 PUSH2 0x2010 JUMP JUMPDEST MLOAD SWAP3 MLOAD AND SWAP2 PUSH2 0x18E6 JUMP JUMPDEST PUSH1 0x24 SWAP3 POP DUP11 MLOAD SWAP2 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x336 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC SWAP4 DUP2 DUP6 CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI PUSH2 0xDF3 PUSH2 0x14A0 JUMP JUMPDEST SWAP3 PUSH1 0x24 SWAP1 DUP2 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP8 DUP9 DUP6 GT PUSH2 0x32A JUMPI DUP6 SWAP1 DUP6 CALLDATASIZE SUB ADD SLT PUSH2 0x49F JUMPI DUP1 MLOAD SWAP8 DUP6 DUP10 ADD DUP10 DUP2 LT DUP3 DUP3 GT OR PUSH2 0x104A JUMPI DUP3 MSTORE DUP5 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x326 JUMPI DUP6 ADD SWAP1 CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x326 JUMPI DUP4 DUP3 ADD CALLDATALOAD SWAP2 PUSH2 0xE50 DUP4 PUSH2 0x15EF JUMP JUMPDEST SWAP1 PUSH2 0xE5D DUP6 MLOAD SWAP3 DUP4 PUSH2 0x1437 JUMP JUMPDEST DUP4 DUP3 MSTORE PUSH1 0x20 SWAP4 DUP8 DUP6 DUP5 ADD SWAP2 PUSH1 0x7 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x1046 JUMPI DUP9 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xFE9 JUMPI POP POP POP DUP11 MSTORE PUSH1 0x44 PUSH2 0xE93 DUP7 DUP9 ADD PUSH2 0x1509 JUMP JUMPDEST SWAP7 DUP4 DUP13 ADD SWAP8 DUP9 MSTORE ADD CALLDATALOAD SWAP5 DUP4 DUP12 ADD SWAP2 DUP7 DUP4 MSTORE PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0xFE5 JUMPI PUSH2 0xEBB SWAP1 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP6 SWAP1 SWAP7 DUP1 TIMESTAMP GT PUSH2 0xFBA JUMPI POP POP POP DUP10 SWAP9 SWAP10 MLOAD MLOAD PUSH2 0xED6 DUP2 PUSH2 0x1E04 JUMP JUMPDEST SWAP1 DUP12 JUMPDEST DUP2 DUP2 LT PUSH2 0xF97 JUMPI POP POP SWAP3 DUP9 SWAP5 SWAP3 PUSH2 0xD78 SWAP3 PUSH2 0xF64 SWAP8 SWAP6 DUP4 MLOAD PUSH2 0xF02 DUP2 PUSH2 0x3F9 DUP7 DUP3 ADD DUP1 SWAP6 PUSH2 0x1EAF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP11 DUP12 DUP12 MLOAD AND SWAP2 MLOAD SWAP3 DUP6 MLOAD SWAP5 DUP6 ADD SWAP6 PUSH32 0xAF1B0D30D2CAB0380E68F0689007E3254993C596F2FDD0AAA7F4D04F79440863 DUP8 MSTORE DUP6 ADD MSTORE DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0xD70 DUP2 PUSH2 0x13FF JUMP JUMPDEST MLOAD AND SWAP1 DUP3 MLOAD MLOAD SWAP3 DUP5 JUMPDEST DUP5 DUP2 LT PUSH2 0xF78 JUMPI DUP6 DUP1 RETURN JUMPDEST DUP1 PUSH2 0xF91 DUP6 DUP6 PUSH2 0xF8B PUSH1 0x1 SWAP6 DUP8 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD PUSH2 0x18E6 JUMP JUMPDEST ADD PUSH2 0xF6D JUMP JUMPDEST DUP1 PUSH2 0x311 PUSH2 0xFAC DUP15 SWAP16 SWAP15 SWAP4 PUSH2 0xFB2 SWAP5 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD PUSH2 0x1F07 JUMP JUMPDEST SWAP12 SWAP11 SWAP12 PUSH2 0xED9 JUMP JUMPDEST DUP6 MLOAD SWAP2 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST DUP11 DUP1 REVERT JUMPDEST PUSH1 0x80 DUP3 CALLDATASIZE SUB SLT PUSH2 0x1046 JUMPI DUP6 PUSH1 0x80 SWAP2 DUP9 MLOAD PUSH2 0x1002 DUP2 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x100B DUP6 PUSH2 0x1509 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1018 DUP4 DUP7 ADD PUSH2 0x1509 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE PUSH2 0x1027 DUP11 DUP7 ADD PUSH2 0x1607 JUMP JUMPDEST DUP11 DUP3 ADD MSTORE DUP14 PUSH2 0x1037 DUP2 DUP8 ADD PUSH2 0x1607 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xE7A JUMP JUMPDEST DUP13 DUP1 REVERT JUMPDEST DUP5 DUP10 PUSH1 0x41 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH2 0x140 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x5BF JUMPI PUSH2 0x10B0 CALLDATASIZE PUSH2 0x152A JUMP JUMPDEST SWAP2 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI PUSH2 0x10E2 PUSH2 0x1478 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 SWAP1 PUSH2 0x104 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x49F JUMPI PUSH2 0x1105 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP1 SWAP4 PUSH2 0x124 CALLDATALOAD SWAP7 DUP8 GT PUSH2 0x32A JUMPI PUSH2 0x1125 PUSH2 0xBD1 SWAP7 PUSH2 0x2F6 SWAP9 CALLDATASIZE SWAP2 ADD PUSH2 0x15C1 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP3 MLOAD SWAP1 PUSH2 0x1134 DUP3 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x64 DUP3 MSTORE PUSH32 0x5065726D69745769746E6573735472616E7366657246726F6D28546F6B656E50 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x65726D697373696F6E73207065726D69747465642C6164647265737320737065 DUP5 DUP4 ADD MSTORE PUSH32 0x6E6465722C75696E74323536206E6F6E63652C75696E7432353620646561646C PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x696E652C00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP4 MLOAD SWAP5 DUP6 SWAP2 DUP2 PUSH2 0x11E3 PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x1EDC JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP12 DUP2 MSTORE SUB SWAP4 PUSH2 0x121C PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1437 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 PUSH2 0x122A DUP7 MLOAD PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0x20 DUP8 DUP2 ADD MLOAD DUP6 DUP10 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD PUSH2 0x2E1 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x5BF JUMPI PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x332 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP3 GT PUSH2 0xBDA JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0xBDA JUMPI DUP2 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x32E JUMPI PUSH1 0x24 SWAP1 PUSH1 0x7 CALLDATASIZE DUP4 DUP7 DUP4 SHL DUP5 ADD ADD GT PUSH2 0x49F JUMPI DUP7 JUMPDEST DUP6 DUP2 LT PUSH2 0x12E5 JUMPI DUP8 DUP1 RETURN JUMPDEST DUP1 DUP3 SHL DUP4 ADD SWAP1 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x326 JUMPI PUSH2 0x1392 DUP9 DUP8 PUSH1 0x1 SWAP5 PUSH1 0x60 DUP4 MLOAD PUSH2 0x132C DUP2 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x1368 PUSH1 0x84 PUSH2 0x133C DUP14 DUP7 ADD PUSH2 0x1509 JUMP JUMPDEST SWAP5 DUP6 DUP5 MSTORE PUSH2 0x134C PUSH1 0x44 DUP3 ADD PUSH2 0x1509 JUMP JUMPDEST DUP1 SWAP8 DUP6 ADD MSTORE PUSH2 0x135D PUSH1 0x64 DUP3 ADD PUSH2 0x1509 JUMP JUMPDEST DUP1 SWAP9 DUP6 ADD MSTORE ADD PUSH2 0x1509 JUMP JUMPDEST SWAP2 DUP3 SWAP2 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 DUP1 SWAP4 AND SWAP6 AND SWAP4 AND SWAP2 AND PUSH2 0x17A1 JUMP JUMPDEST ADD PUSH2 0x12DA JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD SWAP1 PUSH1 0x80 DUP3 SLT PUSH2 0x149B JUMPI PUSH1 0x40 DUP1 MLOAD SWAP1 PUSH2 0x1563 DUP3 PUSH2 0x13E3 JUMP JUMPDEST DUP1 DUP3 SWAP5 SLT PUSH2 0x149B JUMPI DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI DUP3 MSTORE PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x149B JUMPI DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x149B JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x149B JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x149B JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x13B4 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x149B JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x149B JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x149B JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x149B JUMPI PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0x1666 DUP4 PUSH2 0x13E3 JUMP JUMPDEST DUP3 SWAP5 DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x149B JUMPI DUP4 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x149B JUMPI DUP1 CALLDATALOAD PUSH2 0x1693 DUP2 PUSH2 0x15EF JUMP JUMPDEST SWAP3 PUSH2 0x16A0 DUP8 MLOAD SWAP5 DUP6 PUSH2 0x1437 JUMP JUMPDEST DUP2 DUP5 MSTORE PUSH1 0x20 SWAP5 DUP6 DUP1 DUP7 ADD SWAP4 PUSH1 0x6 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x149B JUMPI SWAP1 DUP7 DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 ADD SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x16E3 JUMPI POP POP POP POP POP DUP6 MSTORE DUP1 DUP3 ADD CALLDATALOAD SWAP1 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 DUP5 DUP4 SUB SLT PUSH2 0x149B JUMPI DUP9 MLOAD SWAP1 DUP10 DUP3 ADD SWAP1 DUP3 DUP3 LT DUP6 DUP4 GT OR PUSH2 0x1730 JUMPI DUP11 SWAP3 DUP10 SWAP3 DUP5 MSTORE PUSH2 0x1714 DUP8 PUSH2 0x1509 JUMP JUMPDEST DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP2 SWAP1 DUP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0x24 PUSH1 0x0 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 DUP3 DUP5 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP3 DUP3 DUP3 KECCAK256 SWAP7 AND SWAP6 DUP7 DUP3 MSTORE PUSH1 0x20 MSTORE DUP2 DUP2 KECCAK256 CALLER DUP3 MSTORE PUSH1 0x20 MSTORE KECCAK256 SWAP5 DUP6 SLOAD SWAP6 PUSH6 0xFFFFFFFFFFFF DUP8 PUSH1 0xA0 SHR AND DUP1 TIMESTAMP GT PUSH2 0x1884 JUMPI POP DUP3 DUP8 AND SWAP7 DUP4 DUP9 SUB PUSH2 0x1812 JUMPI JUMPDEST POP POP PUSH2 0x1810 SWAP6 POP AND SWAP3 PUSH2 0x22FC JUMP JUMPDEST JUMP JUMPDEST DUP8 DUP5 DUP5 AND GT PUSH1 0x0 EQ PUSH2 0x184F JUMPI PUSH1 0x24 DUP9 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xF96FB07100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP5 DUP5 PUSH2 0x1810 SWAP11 SUB AND SWAP2 AND OR SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x1802 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD81B2F2E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x149B JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0x60 DUP5 ADD MLOAD AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP6 MLOAD AND SWAP5 DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND SWAP3 DUP1 DUP7 PUSH1 0x40 DUP1 SWAP5 ADD MLOAD AND SWAP6 AND SWAP6 PUSH1 0x0 SWAP2 DUP8 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 DUP10 DUP5 MSTORE PUSH1 0x20 MSTORE DUP4 DUP4 KECCAK256 SWAP10 AND SWAP9 DUP10 DUP4 MSTORE PUSH1 0x20 MSTORE DUP3 DUP3 KECCAK256 SWAP2 DUP5 DUP4 SLOAD PUSH1 0xD0 SHR SUB PUSH2 0x1A3E JUMPI SWAP2 DUP6 PUSH2 0x1A17 SWAP5 SWAP3 PUSH32 0xC6A377BFC4EB120024A8AC08EEF205BE16B817020812C73223E81D1BDB9708EC SWAP9 SWAP8 SWAP7 SWAP5 POP DUP8 ISZERO PUSH1 0x0 EQ PUSH2 0x1A1C JUMPI PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 TIMESTAMP AND JUMPDEST PUSH1 0xA0 SHL AND PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP7 ADD PUSH1 0xD0 SHL AND OR OR SWAP1 SSTORE MLOAD SWAP4 DUP5 SWAP4 DUP5 SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP6 ADD SWAP7 AND DUP5 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST POP PUSH26 0xFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP8 PUSH2 0x19A9 JUMP JUMPDEST PUSH1 0x4 DUP5 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CHAINID PUSH32 0x0 SUB PUSH2 0x1AB2 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0x1B1C DUP2 PUSH2 0x13FF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1B2A PUSH2 0x1A67 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x1B1C DUP2 PUSH2 0x1398 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP4 PUSH1 0x40 DUP5 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0x1C0F JUMPI POP PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP1 DUP7 GT PUSH2 0x1BDE JUMPI POP SWAP2 DUP6 SWAP2 PUSH2 0xD78 PUSH2 0x1BAE SWAP5 PUSH2 0x1BA9 PUSH1 0x20 DUP9 ADD MLOAD DUP7 PUSH2 0x1D90 JUMP JUMPDEST PUSH2 0x1B22 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 MLOAD MLOAD AND SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x149B JUMPI PUSH2 0x1810 SWAP4 PUSH2 0x22FC JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP6 SWAP1 SWAP4 SWAP6 DUP1 MLOAD MLOAD SWAP6 PUSH1 0x40 SWAP3 DUP4 DUP4 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0x1D60 JUMPI POP DUP5 DUP9 SUB PUSH2 0x1D37 JUMPI PUSH2 0x1C77 SWAP2 DUP7 SWAP2 PUSH2 0xD78 PUSH1 0x20 SWAP12 PUSH2 0x1BA9 DUP14 DUP9 ADD MLOAD DUP7 PUSH2 0x1D90 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 DUP2 LT PUSH2 0x1C8B JUMPI POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C96 DUP2 DUP4 MLOAD PUSH2 0x175E JUMP JUMPDEST MLOAD DUP9 PUSH2 0x1CA3 DUP4 DUP8 DUP11 PUSH2 0x18B5 JUMP JUMPDEST ADD CALLDATALOAD SWAP1 DUP10 DUP2 ADD MLOAD DUP1 DUP4 GT PUSH2 0x1D07 JUMPI POP SWAP2 DUP2 DUP9 DUP9 DUP9 PUSH1 0x1 SWAP7 DUP6 SWAP7 PUSH2 0x1CCD JUMPI JUMPDEST POP POP POP POP POP POP ADD PUSH2 0x1C7A JUMP JUMPDEST PUSH2 0x1CFC SWAP6 PUSH2 0x1CF6 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x515 SWAP4 MLOAD AND SWAP6 PUSH2 0x18B5 JUMP JUMPDEST SWAP2 PUSH2 0x22FC JUMP JUMPDEST DUP1 CODESIZE DUP9 DUP9 DUP9 DUP4 PUSH2 0x1CC1 JUMP JUMPDEST PUSH1 0x24 SWAP1 DUP7 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 MLOAD PUSH32 0xFF633A3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 DUP6 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SHR PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD XOR DUP1 SWAP2 SSTORE AND ISZERO PUSH2 0x1DDA JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x1E0E DUP3 PUSH2 0x15EF JUMP JUMPDEST PUSH2 0x1E1B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1437 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1E49 DUP3 SWAP5 PUSH2 0x15EF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1E80 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 SWAP3 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1EC8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1EBA JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x1EF4 JUMPI POP POP ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP2 DUP6 ADD MSTORE ADD PUSH2 0x1EE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x65626CAD6CB96493BF6F5EBEA28756C966F023AB9E8A83A7101849D5573B3678 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x60 PUSH6 0xFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE ADD MLOAD AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x13B4 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP3 PUSH32 0x618358AC3DB8DC274F0CD8829DA7E234BD48CD73C4A740AEDE1ADEC9846D06A1 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0x1B1C DUP2 PUSH2 0x1398 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x149B JUMPI PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 EXTCODESIZE PUSH2 0x2177 JUMPI POP PUSH1 0x41 DUP3 SUB PUSH2 0x20F5 JUMPI PUSH2 0x202D DUP3 DUP3 ADD DUP3 PUSH2 0x1FFA JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x40 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x40 PUSH1 0x80 SWAP6 ADD CALLDATALOAD PUSH1 0xF8 SHR JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x20E9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x0 MLOAD AND SWAP2 DUP3 ISZERO PUSH2 0x20BF JUMPI AND SUB PUSH2 0x2095 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP3 SUB PUSH2 0x214D JUMPI PUSH2 0x2109 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1FFA JUMP JUMPDEST SWAP2 PUSH1 0x1B PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 PUSH1 0xFF SHR ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x1E80 JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x80 SWAP5 PUSH2 0x204B JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4BE6321B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP3 SWAP4 SWAP2 PUSH1 0x1F SWAP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x64 PUSH1 0x20 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP15 DUP16 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP8 ADD MSTORE DUP2 PUSH1 0x44 DUP8 ADD MSTORE DUP7 DUP7 ADD CALLDATACOPY DUP12 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x22F1 JUMPI DUP3 SWAP2 PUSH2 0x2273 JUMPI JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 POP AND SUB PUSH2 0x2249 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB0669CBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x22E9 JUMPI JUMPDEST DUP2 PUSH2 0x228D PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1437 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x336 JUMPI MLOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0xA9A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 CODESIZE PUSH2 0x221D JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2280 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x64 SWAP2 PUSH1 0x0 SWAP4 PUSH1 0x40 MLOAD SWAP3 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x23D3 JUMPI JUMPDEST POP ISZERO PUSH2 0x2375 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x236D JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"385:152:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;4678:86:49;;;;1621:102;385:152:42;4678:86:49;;1621:102;;;:::i;:::-;;;;;;;;4678:86;;;;;;;;;;;;:::i;:::-;385:152:42;4668:97:49;;4799:16;;;385:152:42;4873:27:49;;;:::i;:::-;4916:13;;4931:16;;;;;;385:152:42;;3581:9:44;385:152:42;;5088:234:49;385:152:42;;;5152:39:49;;661:173;385:152:42;5152:39:49;;661:173;;;:::i;:::-;5152:39;;;;;;;;:::i;:::-;385:152:42;5142:50:49;;385:152:42;5238:12:49;;;385:152:42;5268:15:49;;;385:152:42;;;5088:234:49;;;385:152:42;;;1621:102:49;;;385:152:42;;;;5210:10:49;1621:102;;;385:152:42;1621:102:49;;;385:152:42;;;;1621:102:49;;;385:152:42;;;;;;1621:102:49;;;385:152:42;;1621:102:49;;;5088:234;;;;;;;;;:::i;:::-;385:152:42;5065:267:49;;3581:9:44;;:::i;:::-;385:152:42;;4949:3:49;5017:16;4995:42;5017:19;4949:3;5017:16;;;:19;:::i;:::-;;4995:42;:::i;:::-;4968:69;;;;:::i;:::-;385:152:42;4949:3:49;:::i;:::-;4916:13;;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;3353:16:49;;;;;385:152:42;3427:27:49;;;;:::i;:::-;3470:13;;3485:16;;;;;;385:152:42;;3109:9:44;385:152:42;;;;3734:39:49;;661:173;385:152:42;3734:39:49;;661:173;;;:::i;:::-;3734:39;;;;;;;;:::i;:::-;385:152:42;3724:50:49;;385:152:42;3820:12:49;;385:152:42;3850:15:49;;;385:152:42;;;;3642:237:49;385:152:42;3642:237:49;;385:152:42;1254:173:49;385:152:42;;1018:166:49;;385:152:42;3792:10:49;1018:166;;;385:152:42;;1018:166:49;;385:152:42;1018:166:49;;;385:152:42;1018:166:49;3642:237;;;;;:::i;3503:3::-;3571:16;;3522:69;3571:16;3549:42;3571:19;3503:3;3571:16;;;:19;:::i;3549:42::-;3522:69;;:::i;3503:3::-;3470:13;;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4519:13:40;;;;4534:10;;;;;;385:152:42;;;4546:3:40;4585:12;:18;:12;385:152:42;4585:12:40;;;;:::i;:::-;:18;:::i;:::-;4639:20;:12;;;;;;:::i;:::-;:20;;:::i;:::-;4356:10;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4744:31:40;4356:10;;4744:31;;385:152:42;4519:13:40;;385:152:42;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;1098:92:40;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;1383:10:40;1488:56;1383:10;;385:152:42;;1373:9:40;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1510:54:48;:15;;:54;385:152:42;;;1535:15:48;;385:152:42;1510:54:48;;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;1383:10:40;1488:56;;385:152:42;;1510:54:48;;;;;;385:152:42;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;4973:10:40;385:152:42;;;;4963:9:40;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5021:20:40;;;;;5017:47;;385:152:42;;;;;;5233:24:40;5229:60;;4973:10;;5379:65;4973:10;;;;385:152:42;;4963:9:40;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:10:40;5379:65;;385:152:42;;5229:60:40;385:152:42;;5266:23:40;;;;5017:47;385:152:42;;;5050:14:40;;;;385:152:42;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:53:44;385:152:42;;;;;5273:10:44;385:152:42;;;;;;;;;;;;;;;;;;;5261:40:44;385:152:42;;;;;;;;;;;5273:10:44;5317:53;;385:152:42;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;2841:5:40;;;:::i;385:152:42:-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;1157:9:44;385:152:42;;;;;;;:::i;:::-;3029:16:49;;;3007:39;3029:16;;3007:39;:::i;:::-;3163:12;;;385:152:42;3177:15:49;;;385:152:42;;;;3086:107:49;3163:12;3086:107;;385:152:42;1018:166:49;385:152:42;;1018:166:49;;385:152:42;3151:10:49;1018:166;;;385:152:42;1018:166:49;;;385:152:42;1018:166:49;;;385:152:42;1018:166:49;3086:107;;;;;:::i;:::-;385:152:42;3063:140:49;;1157:9:44;;:::i;385:152:42:-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1710:15:40;;;;;:42;1706:97;;2078:20:49;;;;;1888:35:40;1987:20;2078::49;;1925:5:40;2078:20:49;2059:40;2078:20;;2059:40;:::i;:::-;385:152:42;;;;;;;;;;2138:95:49;385:152:42;2138:95:49;;385:152:42;433:172:49;385:152:42;;433:172:49;;385:152:42;;433:172:49;;385:152:42;;433:172:49;;385:152:42;;2138:95:49;;;;;:::i;:::-;385:152:42;2128:106:49;;1888:35:40;:::i;:::-;1925:5;;:::i;:::-;1958:20;385:152:42;;;1987:20:40;;:::i;1706:97::-;385:152:42;;;;;1761:42:40;;;;;;385:152:42;1761:42:40;385:152:42;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2172:15:40;;;;;:41;2168:95;;2375:19:49;;;;;;;385:152:42;2443:25:49;;;:::i;:::-;2483:13;;2498:14;;;;;;385:152:42;;;;;;2348:34:40;385:152:42;2384:5:40;385:152:42;;;;2721:30:49;;661:173;2721:30;;;661:173;;;:::i;2721:30::-;385:152:42;2711:41:49;;385:152:42;;;;;;;;;;;;2643:201:49;;;385:152:42;661:173:49;385:152:42;;433:172:49;;385:152:42;433:172:49;;385:152:42;;433:172:49;;385:152:42;;2643:201:49;;;;;:::i;2384:5:40:-;385:152:42;;2489:19:40;;;385:152:42;2534:13:40;;2549:10;;;;;;385:152:42;;;2561:3:40;2600:19;2631:7;2600:19;;:22;385:152:42;2600:19:40;;;:22;:::i;:::-;;2631:7;:::i;:::-;385:152:42;2534:13:40;;2514:3:49;2570:19;2551:42;2570:22;:19;;;;2514:3;2570:19;;:22;:::i;:::-;;2551:42;:::i;2514:3::-;2483:13;;;;;2168:95:40;385:152:42;;2222:41:40;;;;;;385:152:42;2222:41:40;385:152:42;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;4322:94:49;385:152:42;1622:9:44;385:152:42;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;4133:80:49;;;;1621:102;385:152:42;4133:80:49;;1621:102;;;:::i;:::-;;;;;;;;4133:80;;;;;;;;;;;;:::i;:::-;385:152:42;4123:91:49;;4278:16;4256:39;4278:16;;4256:39;:::i;:::-;385:152:42;4377:12:49;;;385:152:42;4391:15:49;;;385:152:42;;;4322:94:49;;;385:152:42;;;1621:102:49;;;385:152:42;;;;4365:10:49;1621:102;;;385:152:42;1621:102:49;;;385:152:42;;;;1621:102:49;;;385:152:42;;;;;;1621:102:49;;;385:152:42;;1621:102:49;;;4322:94;1621:102;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3075:13:40;3090:10;;;;;;385:152:42;;;3102:3:40;385:152:42;;;;;;;;;;;;;;;3283:20:40;385:152:42;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3283:20:40;:::i;:::-;385:152:42;3075:13:40;;385:152:42;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;1018:166:49;385:152:42;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;385:152:42;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;3482:737:40;;;;385:152:42;;-1:-1:-1;385:152:42;;;;;3610:9:40;385:152:42;;;;;;;;;;;;;;;;;3633:10:40;385:152:42;;;;;;;;;;;;;;3659:15:40;;:36;3655:85;;385:152:42;;;;3799:30:40;;;;3795:289;;3482:737;385:152:42;;4165:47:40;385:152:42;;;4165:47:40;;:::i;:::-;3482:737::o;3795:289::-;385:152:42;;;;3849:18:40;3845:229;3849:18;;;385:152:42;;;;3894:32:40;;;;;;;385:152:42;3894:32:40;3845:229;385:152:42;;;4165:47:40;385:152:42;;;;;;;;3795:289:40;;;;3655:85;385:152:42;;;;3704:36:40;;;;;;;385:152:42;3704:36:40;385:152:42;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;5681:530:40:-;;385:152:42;5801:13:40;;;;;385:152:42;;;;;;;;5880:14:40;;;;;385:152:42;;5924:18:40;;;;;;;385:152:42;;;;-1:-1:-1;;385:152:42;;;;5986:9:40;5880:14;385:152:42;;;;;;;5880:14:40;385:152:42;;;;;;;;;;5880:14:40;385:152:42;;;;;;;;;;6033:22:40;6029:49;;843:79:48;;6148:56:40;843:79:48;;6148:56:40;843:79:48;;;;:40;;;:79;385:152:42;;;;893:15:48;;385:152:42;843:79:48;1883:3;385:152:42;;;5986:9:40;385:152:42;;;;;1834:52:48;:61;1001:59;;385:152:42;6148:56:40;;;;385:152:42;;;;;;;;;;;;;;;;;;;;;;;;;;6148:56:40;;;;5681:530::o;843:79:48:-;;385:152:42;843:79:48;;;6029:49:40;6064:14;385:152:42;;6064:14:40;;;;1123:216:41;1198:13;1215:16;1198:33;1215:16;;1246:24;1123:216;:::o;1198:134::-;385:152:42;;1560:60:41;;;385:152:42;726:80:41;385:152:42;;654:20:41;385:152:42;;;;1198:13:41;385:152:42;;;;1614:4:41;385:152:42;;;;;1560:60:41;;;;;:::i;:::-;385:152:42;1550:71:41;;1123:216;:::o;1685:167::-;1815:18;;:::i;:::-;385:152:42;;;1786:58:41;;;;385:152:42;;;;;;;;;;;;;1786:58:41;;;;;:::i;2075:704:44:-;;;;;2338:31;385:152:42;2402:15:44;;;;385:152:42;2384:15:44;;:33;2380:79;;2491:16;2338:31;2491:16;;:23;385:152:42;2473:41:44;;;2469:92;;2598:12;;;;2639:24;2665:5;2598:12;;2338:31;2598:12;;385:152:42;2598:12:44;;:::i;:::-;2639:24;:::i;2665:5::-;385:152:42;2688:16:44;;;385:152:42;;;;;;;;;;;;2756:15:44;;;:::i;2469:92::-;385:152:42;;2402:15:44;385:152:42;2523:38:44;;;;;;;385:152:42;2523:38:44;2380:79;385:152:42;;2402:15:44;385:152:42;2426:33:44;;;;;;;385:152:42;2426:33:44;3937:1194;;;;;4204:16;;385:152:42;4260:15:44;;;;;;385:152:42;4242:15:44;;:33;4238:79;;4331:38;;;;4327:67;;4497:5;4431:12;;;4471:24;4431:12;;;;;;385:152:42;4431:12:44;;:::i;4497:5::-;-1:-1:-1;4558:16:44;;;;;;3937:1194;;;;;;;;:::o;4576:3::-;4635:19;:16;;;:19;:::i;:::-;;4698:18;;;;;;:::i;:::-;:34;385:152:42;4773:16:44;;;;385:152:42;4755:34:44;;;4751:78;;4852:20;;;;;;385:152:42;4852:20:44;;;4848:253;;4576:3;;;;;;;385:152:42;4543:13:44;;4848:253;5066:15;385:152:42;5043:21:44;385:152:42;;5043:18:44;385:152:42;;;5043:18:44;;:::i;:21::-;5066:15;;:::i;:::-;4848:253;;;;;;;;4751:78;385:152:42;;;;4798:31:44;;;;;;;385:152:42;4798:31:44;4327:67;4378:16;385:152:42;;4378:16:44;;;;4238:79;385:152:42;;;;4284:33:44;;;;;;;385:152:42;4284:33:44;6250:293;;385:152:42;6408:1:44;385:152:42;;;;;;-1:-1:-1;385:152:42;-1:-1:-1;385:152:42;;;-1:-1:-1;385:152:42;;5992:1:44;385:152:42;-1:-1:-1;385:152:42;;;;-1:-1:-1;385:152:42;;;;6447:33:44;385:152:42;;;6495:13:44;:18;6491:45;;6250:293::o;6491:45::-;6522:14;385:152:42;;6522:14:44;;;;385:152:42;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;661:173:49;385:152:42;;;;;;661:173:49;;;;;;;;;;;;;:::o;:::-;;;385:152:42;;661:173:49;;;;;;;;;;;;1621:102;;385:152:42;;1621:102:49;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;5345:188;385:152:42;;5480:45:49;;;385:152:42;289:87:49;385:152:42;;;289:87:49;;;385:152:42;;289:87:49;;385:152:42;5480:45:49;289:87;;;385:152:42;289:87:49;;;385:152:42;289:87:49;385:152:42;289:87:49;;385:152:42;289:87:49;;;385:152:42;289:87:49;;;385:152:42;289:87:49;;385:152:42;289:87:49;;;385:152:42;289:87:49;5480:45;;289:87;385:152:42;;;;;;;;;;;;;;5470:56:49;;5345:188;:::o;5539:229::-;385:152:42;;5710:50:49;;;;385:152:42;895:59:49;385:152:42;;;895:59:49;;385:152:42;;895:59:49;;385:152:42;895:59:49;;;;;385:152:42;895:59:49;5710:50;;;;;:::i;385:152:42:-;;;;;;;;;;;;;;;;;:::o;700:1109:51:-;-1:-1:-1;863:25:51;;;;-1:-1:-1;933:2:51;913:22;;933:2;;964:41;;;;;;:::i;:::-;955:50;;625:68;1043:2;625:68;;;;;;-1:-1:-1;625:68:51;385:152:42;1043:2:51;625:68;;;1033:13;625:68;;909:490;385:152:42;;;;;;625:68:51;;;;385:152:42;625:68:51;;385:152:42;625:68:51;;;385:152:42;1429:24:51;;;;;;;;;385:152:42;1429:24:51;-1:-1:-1;1429:24:51;385:152:42;1471:20:51;;;1467:51;;385:152:42;1536:23:51;1532:51;;700:1109::o;1532:51::-;1568:15;385:152:42;;1568:15:51;;;;1467:51;1500:18;385:152:42;;1500:18:51;;;;1429:24;385:152:42;;;-1:-1:-1;385:152:42;;;;;909:490:51;1092:2;1072:22;;1092:2;;1180:41;;;;;;:::i;:::-;1170:51;1312:2;626:66;1243:19;;385:152:42;;;625:68:51;;385:152:42;625:68:51;;;;;1280:34;-1:-1:-1;1280:34:51;385:152:42;625:68:51;1280:34;909:490;;1068:331;1360:24;1092:2;385:152:42;1360:24:51;;;;859:944;385:152:42;;;;;;;;1634:57:51;385:152:42;;;;;;;;;;;;1634:57:51;;;;;;;385:152:42;;;;;;;;;;;;;;1621:102:49;;;;;;;;385:152:42;;;;1634:57:51;;385:152:42;;1634:57:51;;;;;;;;;;;859:944;385:152:42;;;;;1709:48:51;1705:87;;700:1109::o;1705:87::-;1634:57;385:152:42;;1766:26:51;;;;1634:57;;;;;;;;;;;;;;;;;:::i;:::-;;;385:152:42;;;;;;;;;;;;;1634:57:51;385:152:42;1634:57:51;;;;;;;-1:-1:-1;1634:57:51;;;385:152:42;;;;;;;;;1187:1639:55;;1391:1378;1187:1639;1391:1378;1187:1639;-1:-1:-1;1391:1378:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1391:1378:55;;;;;;;1187:1639;385:152:42;;;;1187:1639:55:o;385:152:42:-;1391:1378:55;;385:152:42;;;;1391:1378:55;;385:152:42;;;;1391:1378:55;385:152:42;;;;1391:1378:55;385:152:42;;;;1391:1378:55;;;;;;;-1:-1:-1;1391:1378:55;;"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address,address)":"927da105","approve(address,address,uint160,uint48)":"87517c45","invalidateNonces(address,address,uint48)":"65d9723c","invalidateUnorderedNonces(uint256,uint256)":"3ff9dcb1","lockdown((address,address)[])":"cc53287f","nonceBitmap(address,uint256)":"4fe02b44","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"2a2d80d1","permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)":"30f28b7a","permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)":"edd9444b","permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)":"137c29fe","permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)":"fe8ec1a7","transferFrom((address,address,uint160,address)[])":"0d58b1db","transferFrom(address,address,uint160,address)":"36c78516"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureDeadline\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"Lockdown\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"oldNonce\",\"type\":\"uint48\"}],\"name\":\"NonceInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"name\":\"Permit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"}],\"name\":\"invalidateNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wordPos\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"invalidateUnorderedNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.TokenSpenderPair[]\",\"name\":\"approvals\",\"type\":\"tuple[]\"}],\"name\":\"lockdown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonceBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.AllowanceTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users must approve Permit2 before calling any of the transfer functions.\",\"errors\":{\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}],\"InvalidAmount(uint256)\":[{\"params\":{\"maxAmount\":\"The maximum amount a spender can request to transfer\"}}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}],\"SignatureExpired(uint256)\":[{\"params\":{\"signatureDeadline\":\"The timestamp at which a signature is no longer valid\"}}]},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Uses cached version if chainid and address are unchanged from construction.\"},\"approve(address,address,uint160,uint48)\":{\"details\":\"The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval\",\"params\":{\"amount\":\"The approved amount of the token\",\"expiration\":\"The timestamp at which the approval is no longer valid\",\"spender\":\"The spender address to approve\",\"token\":\"The token to approve\"}},\"invalidateNonces(address,address,uint48)\":{\"details\":\"Can't invalidate more than 2**16 nonces per transaction.\",\"params\":{\"newNonce\":\"The new nonce to set. Invalidates all nonces less than it.\",\"spender\":\"The spender to invalidate nonces for\",\"token\":\"The token to invalidate nonces for\"}},\"invalidateUnorderedNonces(uint256,uint256)\":{\"details\":\"The wordPos is maxed at type(uint248).max\",\"params\":{\"mask\":\"A bitmap masked against msg.sender's current bitmap at the word position\",\"wordPos\":\"A number to index the nonceBitmap at\"}},\"lockdown((address,address)[])\":{\"params\":{\"approvals\":\"Array of approvals to revoke.\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitSingle\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitBatch\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"details\":\"Reverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\"}},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\"}},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definitionReverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"transferFrom((address,address,uint160,address)[])\":{\"details\":\"Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"transferDetails\":\"Array of owners, recipients, amounts, and tokens for the transfers\"}},\"transferFrom(address,address,uint160,address)\":{\"details\":\"Requires the from address to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"amount\":\"The amount of the token to transfer\",\"from\":\"The address to transfer from\",\"to\":\"The address of the recipient\",\"token\":\"The token address to transfer\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"ExcessiveInvalidation()\":[{\"notice\":\"Thrown when too many nonces are invalidated.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}],\"InvalidAmount(uint256)\":[{\"notice\":\"Thrown when the requested amount for a transfer is larger than the permissioned amount\"}],\"InvalidContractSignature()\":[{\"notice\":\"Thrown when the recovered contract signature is incorrect\"}],\"InvalidNonce()\":[{\"notice\":\"Thrown when validating that the inputted nonce has not been used\"}],\"InvalidSignature()\":[{\"notice\":\"Thrown when the recovered signer is equal to the zero address\"}],\"InvalidSignatureLength()\":[{\"notice\":\"Thrown when the passed in signature is not a valid length\"}],\"InvalidSigner()\":[{\"notice\":\"Thrown when the recovered signer does not equal the claimedSigner\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}],\"SignatureExpired(uint256)\":[{\"notice\":\"Thrown when validating an inputted signature that is stale\"}]},\"events\":{\"Approval(address,address,address,uint160,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions on a token for the spender.\"},\"Lockdown(address,address,address)\":{\"notice\":\"Emits an event when the owner sets the allowance back to 0 with the lockdown function.\"},\"NonceInvalidation(address,address,address,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully invalidates an ordered nonce.\"},\"Permit(address,address,address,uint160,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\"},\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"},\"allowance(address,address,address)\":{\"notice\":\"Maps users to tokens to spender addresses and information about the approval on the token\"},\"approve(address,address,uint160,uint48)\":{\"notice\":\"Approves the spender to use up to amount of the specified token up until the expiration\"},\"invalidateNonces(address,address,uint48)\":{\"notice\":\"Invalidate nonces for a given (token, spender) pair\"},\"invalidateUnorderedNonces(uint256,uint256)\":{\"notice\":\"Invalidates the bits specified in mask for the bitmap at the word position\"},\"lockdown((address,address)[])\":{\"notice\":\"Enables performing a \\\"lockdown\\\" of the sender's Permit2 identity by batch revoking approvals\"},\"nonceBitmap(address,uint256)\":{\"notice\":\"A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\"},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"notice\":\"Transfers a token using a signed permit message\"},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit message\"},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"notice\":\"Transfers a token using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"transferFrom((address,address,uint160,address)[])\":{\"notice\":\"Transfer approved tokens in a batch\"},\"transferFrom(address,address,uint160,address)\":{\"notice\":\"Transfer approved tokens from one address to another\"}},\"notice\":\"Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/Permit2.sol\":\"Permit2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/AllowanceTransfer.sol\":{\"keccak256\":\"0x83a47e7841f9d285eb7f0fd977fedb808640714cb9822a104bab99fe5cbb58ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f0de543f076f8556690f236dc431277acf9c91c04916a46040194b03ea9836\",\"dweb:/ipfs/QmQ5YLFHexR2WTNXDGu4y6WjRmLPzrdH92j7NDQzT8Jevp\"]},\"permit2/src/EIP712.sol\":{\"keccak256\":\"0x973d4358c262467a4c2a0c2867c676a8a138102968d8b89355c42f655d1a7a68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7219a31ace8c0a959392cc2ee06817c7c98dfc491e96d27f71a09fb23860b62c\",\"dweb:/ipfs/QmUGRLgddHZ3GoouEBoMYbRS4wVGapJrsD2nBxVwxLBibb\"]},\"permit2/src/Permit2.sol\":{\"keccak256\":\"0x934c0eb24a52eb5900f01f5c328374b670366adf995ba9ed49bcd3d7b87b159e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdfd05b3007726dc6dd2822c1dd9dc1b2471fbec507f30efa71a1a214c98bab6\",\"dweb:/ipfs/QmPq4hptCSUACQdynSa86bdEexE7RryzosrhUAZ9Xkqc5a\"]},\"permit2/src/PermitErrors.sol\":{\"keccak256\":\"0x9fd1192bbc3ffa9354f2bfc534d7a1cdf2be2c940c96ed4ac7bc37991e1e5dfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77f8b2e2c040c33e2c78f05e7e768a17f433c07adb699235c35c4dac92115070\",\"dweb:/ipfs/QmYX2VTyTm6QLtgp54kCrkAGY8uPxkx28urwLNEJsxTHJs\"]},\"permit2/src/SignatureTransfer.sol\":{\"keccak256\":\"0xa821caa24d6231fa8befe24a34bfda2c3b05b56e67fb913c86b26a19b19b6bbe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://584994a77e33aa2fe804b803ab302cb811ee945632b76f68d78db761b18a24a2\",\"dweb:/ipfs/QmVd67VRKX24tSaREBNwhzVfU6xxqRLNEoPY6CYgG3xU5W\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x96f516510d08da5b1d05d81b0bd88af6f9928bb757ba55c27e203654dfcd4fa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0942604688c369aed50905d7cef2ece68e1ff457c95a14c9f913babac29a09a\",\"dweb:/ipfs/Qmf4ZBYCKqQHfnACciz8GEMhwxPw7mhQ6fjGXwpgr8CQF8\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xbab1c35f0a63761be6b50a9a2ce2459b63f09587dd9c6ac46955252a1a04f43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://225dca1a3d91c0737fe75c72bfecae391fc2e7b2eb2ebe1a154bfb16a7527972\",\"dweb:/ipfs/QmdGQdUCANKZ6S23TyHDtBnGvr6CtyyqNNcziVTjEHJ5rk\"]},\"permit2/src/libraries/Allowance.sol\":{\"keccak256\":\"0x65ee20fb1a77d4e25dff2feb84027ff9096b065b6fc064c80f9eee49f1f9d498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f65d62fc64a55b6e3aad9932959ab3f47d701c45f95622215aca0ba076f1a7d\",\"dweb:/ipfs/QmZjDb4Nq9pssFefg8X9bwJNJ4RJEPD8vCaFR2Ur2N4boD\"]},\"permit2/src/libraries/PermitHash.sol\":{\"keccak256\":\"0x54af80d9c3193934c6947c31f59b8f3d7918f83676fe92ed6136593ad591d478\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5264001770be2cdeb7651e4d22af7edbc4e16da6d38747efeb4f54b5472ca5c5\",\"dweb:/ipfs/QmPvwau7DXw6stGQ14hpyTeLdYDYrrrdMnUfkQTPpMXQxz\"]},\"permit2/src/libraries/SignatureVerification.sol\":{\"keccak256\":\"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab\",\"dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"permit2/src/SignatureTransfer.sol":{"SignatureTransfer":{"abi":[{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidContractSignature","type":"error"},{"inputs":[],"name":"InvalidNonce","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSignatureLength","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[{"internalType":"uint256","name":"signatureDeadline","type":"uint256"}],"name":"SignatureExpired","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"word","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mask","type":"uint256"}],"name":"UnorderedNonceInvalidation","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"wordPos","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"}],"name":"invalidateUnorderedNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonceBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60c0346100bb574660a052602081017f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408301524660608301523060808301526080825260a082019180831060018060401b038411176100a5578260405251902060805261152690816100c1823960805181610bfe015260a05181610bd80152f35b634e487b7160e01b600052604160045260246000fd5b600080fdfe6040608081526004908136101561001557600080fd5b600090813560e01c8063137c29fe1461067c57806330f28b7a1461057c5780633644e5151461053b5780633ff9dcb1146104bb5780634fe02b441461044b578063edd9444b146102e25763fe8ec1a71461006e57600080fd5b346102de5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff83358181116102da576100bc9036908601610a7b565b6024358281116102d6576100d39036908701610ba4565b6100db61097b565b916084358581116102d2576100f39036908a01610a35565b98909560a4359081116102ce5761010c91369101610a35565b96909581519061011b826108be565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b91816101ca6020850180966110a8565b918237018a815203996102037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282610912565b5190209085515161021381610fd0565b908a5b8181106102a157505061029e999a6102959183516102488161023c60208201809561107b565b03848101835282610912565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282610912565b51902093610e09565b80f35b806102b96102b36102c9938c51610db6565b516110d3565b6102c38286610db6565b5261101f565b610216565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346102de5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff9080358281116102da576103339036908301610a7b565b6024358381116102d65761034a9036908401610ba4565b93909261035561097b565b916064359081116104475761036c91369101610a35565b9490938351519761037c89610fd0565b98885b81811061042557505061029e979881516103cd816103a160208201809561107b565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610912565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a08152610295816108f6565b808b6102c38261043c6102b3610442968d51610db6565b92610db6565b61037f565b8680fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7573573ffffffffffffffffffffffffffffffffffffffff81168091036104b757828291602094528084528181206024358252845220549051908152f35b8280fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b50346102de57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de57602090610575610bd5565b9051908152f35b508290346104b7576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576105b83661099e565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576105ea610953565b9160e43567ffffffffffffffff81116106785761029e9461060d91369101610a35565b93909261061a83516110d3565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a0815261066f816108f6565b51902091610c90565b8580fd5b5082346104b7576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576106b73661099e565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576106e9610953565b67ffffffffffffffff9390610104358581116104475761070c9036908601610a35565b9093610124359687116102d25761072c61066f9661029e98369101610a35565b96909582519061073b826108be565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816107ea6020850180966110a8565b918237018b815203936108237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282610912565b5190209261083186516110d3565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e08101610289565b6060810190811067ffffffffffffffff82111761088f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761088f57604052565b6080810190811067ffffffffffffffff82111761088f57604052565b60c0810190811067ffffffffffffffff82111761088f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761088f57604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0190608082126109765760408051906109d782610873565b8082941261097657805181810181811067ffffffffffffffff82111761088f57825260043573ffffffffffffffffffffffffffffffffffffffff81168103610976578152602435602082015282526044356020830152606435910152565b9181601f840112156109765782359167ffffffffffffffff8311610976576020838186019501011161097657565b67ffffffffffffffff811161088f5760051b60200190565b919091606081840312610976576040805191610a9683610873565b8294813567ffffffffffffffff9081811161097657830182601f82011215610976578035610ac381610a63565b92610ad087519485610912565b818452602094858086019360061b85010193818511610976579086899897969594939201925b848410610b13575050505050855280820135908501520135910152565b9091929394959697848303126109765788519089820182811085821117610b76578a5284359073ffffffffffffffffffffffffffffffffffffffff82168203610976578289928c9452828701358382015281520193019190889796959493610af6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9181601f840112156109765782359167ffffffffffffffff8311610976576020808501948460061b01011161097657565b467f000000000000000000000000000000000000000000000000000000000000000003610c20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152610c8a816108be565b51902090565b9192909360a435936040840151804211610d395750602084510151808611610d085750918591610cd0610cd694610ccb602088015186610f5c565b610d6a565b91611146565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361097657610d0693611435565b565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b610d72610bd5565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610c8a816108da565b8051821015610dca5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9190811015610dca5760061b0190565b90919593958151519560409586840151804211610f2c5750828803610f0357610e41918691610cd060209b610ccb8d89015186610f5c565b600091825b878110610e5857505050505050505050565b610e63818351610db6565b5189610e70838689610df9565b0135908a810151808311610ed3575081610e8f575b5050600101610e46565b73ffffffffffffffffffffffffffffffffffffffff80915116610eb384878a610df9565b3591821682036104475791610ecc918960019594611435565b9038610e85565b6024908a51907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600487517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908851907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615610fa657565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90610fda82610a63565b610fe76040519182610912565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110158294610a63565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104c5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611094575050505090565b835185529381019392810192600101611086565b9081519160005b8381106110c0575050016000815290565b80602080928401015181850152016110af565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152610c8a816108da565b9190826040910312610976576020823592013590565b6000843b6112ad57506041820361122b5761116382820182611130565b93909260401015610dca5760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa1561121f5773ffffffffffffffffffffffffffffffffffffffff80600051169182156111f55716036111cb57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b604082036112835761123f91810190611130565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff821161104c5760209360009360ff608094611181565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa90811561142a5782916113a9575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361137f57565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d8211611422575b816113c360209383610912565b810103126102de5751907fffffffff000000000000000000000000000000000000000000000000000000008216820361141f57507fffffffff000000000000000000000000000000000000000000000000000000009038611353565b80fd5b3d91506113b6565b6040513d84823e3d90fd5b92602092606491600093604051927f23b872dd00000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8092166004850152166024830152604482015282855af19081601f3d1160016000511416151661150c575b50156114ae57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d17159050386114a656fea164736f6c6343000811000a","opcodes":"PUSH1 0xC0 CALLVALUE PUSH2 0xBB JUMPI CHAINID PUSH1 0xA0 MSTORE PUSH1 0x20 DUP2 ADD PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP2 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP4 ADD MSTORE CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x80 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP2 DUP1 DUP4 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP5 GT OR PUSH2 0xA5 JUMPI DUP3 PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE PUSH2 0x1526 SWAP1 DUP2 PUSH2 0xC1 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0xBFE ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0xBD8 ADD MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 SWAP1 DUP2 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x137C29FE EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x30F28B7A EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x3FF9DCB1 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x4FE02B44 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0xEDD9444B EQ PUSH2 0x2E2 JUMPI PUSH4 0xFE8EC1A7 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2DE JUMPI PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x2DE JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2DA JUMPI PUSH2 0xBC SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x2D6 JUMPI PUSH2 0xD3 SWAP1 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x97B JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x2D2 JUMPI PUSH2 0xF3 SWAP1 CALLDATASIZE SWAP1 DUP11 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP9 SWAP1 SWAP6 PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2CE JUMPI PUSH2 0x10C SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP2 MLOAD SWAP1 PUSH2 0x11B DUP3 PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x6B DUP3 MSTORE PUSH32 0x5065726D697442617463685769746E6573735472616E7366657246726F6D2854 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6F6B656E5065726D697373696F6E735B5D207065726D69747465642C61646472 DUP4 DUP4 ADD MSTORE PUSH32 0x657373207370656E6465722C75696E74323536206E6F6E63652C75696E743235 PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x3620646561646C696E652C000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP3 MLOAD SWAP11 DUP12 SWAP2 DUP2 PUSH2 0x1CA PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x10A8 JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP11 DUP2 MSTORE SUB SWAP10 PUSH2 0x203 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP12 DUP13 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 DUP6 MLOAD MLOAD PUSH2 0x213 DUP2 PUSH2 0xFD0 JUMP JUMPDEST SWAP1 DUP11 JUMPDEST DUP2 DUP2 LT PUSH2 0x2A1 JUMPI POP POP PUSH2 0x29E SWAP10 SWAP11 PUSH2 0x295 SWAP2 DUP4 MLOAD PUSH2 0x248 DUP2 PUSH2 0x23C PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x107B JUMP JUMPDEST SUB DUP5 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP10 DUP2 ADD MLOAD DUP6 DUP12 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0xE09 JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP1 PUSH2 0x2B9 PUSH2 0x2B3 PUSH2 0x2C9 SWAP4 DUP13 MLOAD PUSH2 0xDB6 JUMP JUMPDEST MLOAD PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0x2C3 DUP3 DUP7 PUSH2 0xDB6 JUMP JUMPDEST MSTORE PUSH2 0x101F JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST DUP9 DUP1 REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x2DE JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x2DE JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x2DA JUMPI PUSH2 0x333 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x2D6 JUMPI PUSH2 0x34A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0xBA4 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0x355 PUSH2 0x97B JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x447 JUMPI PUSH2 0x36C SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 DUP4 MLOAD MLOAD SWAP8 PUSH2 0x37C DUP10 PUSH2 0xFD0 JUMP JUMPDEST SWAP9 DUP9 JUMPDEST DUP2 DUP2 LT PUSH2 0x425 JUMPI POP POP PUSH2 0x29E SWAP8 SWAP9 DUP2 MLOAD PUSH2 0x3CD DUP2 PUSH2 0x3A1 PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x107B JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP7 ADD MLOAD DUP3 DUP8 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0xFCF35F5AC6A2C28868DC44C302166470266239195F02B0EE408334829333B766 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x295 DUP2 PUSH2 0x8F6 JUMP JUMPDEST DUP1 DUP12 PUSH2 0x2C3 DUP3 PUSH2 0x43C PUSH2 0x2B3 PUSH2 0x442 SWAP7 DUP14 MLOAD PUSH2 0xDB6 JUMP JUMPDEST SWAP3 PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST DUP7 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x4B7 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0x4B7 JUMPI DUP3 DUP3 SWAP2 PUSH1 0x20 SWAP5 MSTORE DUP1 DUP5 MSTORE DUP2 DUP2 KECCAK256 PUSH1 0x24 CALLDATALOAD DUP3 MSTORE DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x4B7 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI PUSH32 0x3704902F963766A4E561BBAAB6E6CDC1B1DD12F6E9E99648DA8843B3F46B918D SWAP1 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD CALLER DUP6 MSTORE DUP5 PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP2 DUP2 SLOAD OR SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE CALLER SWAP3 LOG2 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2DE JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x2DE JUMPI PUSH1 0x20 SWAP1 PUSH2 0x575 PUSH2 0xBD5 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x4B7 JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI PUSH2 0x5B8 CALLDATASIZE PUSH2 0x99E JUMP JUMPDEST SWAP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x2DA JUMPI PUSH2 0x5EA PUSH2 0x953 JUMP JUMPDEST SWAP2 PUSH1 0xE4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x678 JUMPI PUSH2 0x29E SWAP5 PUSH2 0x60D SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0x61A DUP4 MLOAD PUSH2 0x10D3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD DUP3 DUP6 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0x939C21A48A8DBE3A9A2404A1D46691E4D39F6583D6EC6B35714604C986D80106 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x66F DUP2 PUSH2 0x8F6 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 PUSH2 0xC90 JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x4B7 JUMPI PUSH2 0x140 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI PUSH2 0x6B7 CALLDATASIZE PUSH2 0x99E JUMP JUMPDEST SWAP2 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x2DA JUMPI PUSH2 0x6E9 PUSH2 0x953 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 SWAP1 PUSH2 0x104 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x447 JUMPI PUSH2 0x70C SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP1 SWAP4 PUSH2 0x124 CALLDATALOAD SWAP7 DUP8 GT PUSH2 0x2D2 JUMPI PUSH2 0x72C PUSH2 0x66F SWAP7 PUSH2 0x29E SWAP9 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP3 MLOAD SWAP1 PUSH2 0x73B DUP3 PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x64 DUP3 MSTORE PUSH32 0x5065726D69745769746E6573735472616E7366657246726F6D28546F6B656E50 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x65726D697373696F6E73207065726D69747465642C6164647265737320737065 DUP5 DUP4 ADD MSTORE PUSH32 0x6E6465722C75696E74323536206E6F6E63652C75696E7432353620646561646C PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x696E652C00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP4 MLOAD SWAP5 DUP6 SWAP2 DUP2 PUSH2 0x7EA PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x10A8 JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP12 DUP2 MSTORE SUB SWAP4 PUSH2 0x823 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 PUSH2 0x831 DUP7 MLOAD PUSH2 0x10D3 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP2 ADD MLOAD DUP6 DUP10 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD PUSH2 0x289 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD SWAP1 PUSH1 0x80 DUP3 SLT PUSH2 0x976 JUMPI PUSH1 0x40 DUP1 MLOAD SWAP1 PUSH2 0x9D7 DUP3 PUSH2 0x873 JUMP JUMPDEST DUP1 DUP3 SWAP5 SLT PUSH2 0x976 JUMPI DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI DUP3 MSTORE PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x976 JUMPI DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x976 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x976 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x976 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x88F JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x976 JUMPI PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0xA96 DUP4 PUSH2 0x873 JUMP JUMPDEST DUP3 SWAP5 DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x976 JUMPI DUP4 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x976 JUMPI DUP1 CALLDATALOAD PUSH2 0xAC3 DUP2 PUSH2 0xA63 JUMP JUMPDEST SWAP3 PUSH2 0xAD0 DUP8 MLOAD SWAP5 DUP6 PUSH2 0x912 JUMP JUMPDEST DUP2 DUP5 MSTORE PUSH1 0x20 SWAP5 DUP6 DUP1 DUP7 ADD SWAP4 PUSH1 0x6 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x976 JUMPI SWAP1 DUP7 DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 ADD SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0xB13 JUMPI POP POP POP POP POP DUP6 MSTORE DUP1 DUP3 ADD CALLDATALOAD SWAP1 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 DUP5 DUP4 SUB SLT PUSH2 0x976 JUMPI DUP9 MLOAD SWAP1 DUP10 DUP3 ADD DUP3 DUP2 LT DUP6 DUP3 GT OR PUSH2 0xB76 JUMPI DUP11 MSTORE DUP5 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI DUP3 DUP10 SWAP3 DUP13 SWAP5 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP2 SWAP1 DUP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x24 PUSH1 0x0 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x976 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x976 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x976 JUMPI JUMP JUMPDEST CHAINID PUSH32 0x0 SUB PUSH2 0xC20 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0xC8A DUP2 PUSH2 0x8BE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP4 PUSH1 0x40 DUP5 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0xD39 JUMPI POP PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP1 DUP7 GT PUSH2 0xD08 JUMPI POP SWAP2 DUP6 SWAP2 PUSH2 0xCD0 PUSH2 0xCD6 SWAP5 PUSH2 0xCCB PUSH1 0x20 DUP9 ADD MLOAD DUP7 PUSH2 0xF5C JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST SWAP2 PUSH2 0x1146 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 MLOAD MLOAD AND SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI PUSH2 0xD06 SWAP4 PUSH2 0x1435 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0xD72 PUSH2 0xBD5 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0xC8A DUP2 PUSH2 0x8DA JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP6 SWAP4 SWAP6 DUP2 MLOAD MLOAD SWAP6 PUSH1 0x40 SWAP6 DUP7 DUP5 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0xF2C JUMPI POP DUP3 DUP9 SUB PUSH2 0xF03 JUMPI PUSH2 0xE41 SWAP2 DUP7 SWAP2 PUSH2 0xCD0 PUSH1 0x20 SWAP12 PUSH2 0xCCB DUP14 DUP10 ADD MLOAD DUP7 PUSH2 0xF5C JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 JUMPDEST DUP8 DUP2 LT PUSH2 0xE58 JUMPI POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE63 DUP2 DUP4 MLOAD PUSH2 0xDB6 JUMP JUMPDEST MLOAD DUP10 PUSH2 0xE70 DUP4 DUP7 DUP10 PUSH2 0xDF9 JUMP JUMPDEST ADD CALLDATALOAD SWAP1 DUP11 DUP2 ADD MLOAD DUP1 DUP4 GT PUSH2 0xED3 JUMPI POP DUP2 PUSH2 0xE8F JUMPI JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0xE46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 MLOAD AND PUSH2 0xEB3 DUP5 DUP8 DUP11 PUSH2 0xDF9 JUMP JUMPDEST CALLDATALOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x447 JUMPI SWAP2 PUSH2 0xECC SWAP2 DUP10 PUSH1 0x1 SWAP6 SWAP5 PUSH2 0x1435 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0xE85 JUMP JUMPDEST PUSH1 0x24 SWAP1 DUP11 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x4 DUP8 MLOAD PUSH32 0xFF633A3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 DUP9 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SHR PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD XOR DUP1 SWAP2 SSTORE AND ISZERO PUSH2 0xFA6 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 PUSH2 0xFDA DUP3 PUSH2 0xA63 JUMP JUMPDEST PUSH2 0xFE7 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x912 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1015 DUP3 SWAP5 PUSH2 0xA63 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x104C JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 SWAP3 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1094 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1086 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x10C0 JUMPI POP POP ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP2 DUP6 ADD MSTORE ADD PUSH2 0x10AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP3 PUSH32 0x618358AC3DB8DC274F0CD8829DA7E234BD48CD73C4A740AEDE1ADEC9846D06A1 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0xC8A DUP2 PUSH2 0x8DA JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x976 JUMPI PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 EXTCODESIZE PUSH2 0x12AD JUMPI POP PUSH1 0x41 DUP3 SUB PUSH2 0x122B JUMPI PUSH2 0x1163 DUP3 DUP3 ADD DUP3 PUSH2 0x1130 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x40 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x40 PUSH1 0x80 SWAP6 ADD CALLDATALOAD PUSH1 0xF8 SHR JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x121F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x0 MLOAD AND SWAP2 DUP3 ISZERO PUSH2 0x11F5 JUMPI AND SUB PUSH2 0x11CB JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP3 SUB PUSH2 0x1283 JUMPI PUSH2 0x123F SWAP2 DUP2 ADD SWAP1 PUSH2 0x1130 JUMP JUMPDEST SWAP2 PUSH1 0x1B PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 PUSH1 0xFF SHR ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x104C JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x80 SWAP5 PUSH2 0x1181 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4BE6321B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP3 SWAP4 SWAP2 PUSH1 0x1F SWAP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x64 PUSH1 0x20 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP15 DUP16 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP8 ADD MSTORE DUP2 PUSH1 0x44 DUP8 ADD MSTORE DUP7 DUP7 ADD CALLDATACOPY DUP12 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x142A JUMPI DUP3 SWAP2 PUSH2 0x13A9 JUMPI JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 POP AND SUB PUSH2 0x137F JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB0669CBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x1422 JUMPI JUMPDEST DUP2 PUSH2 0x13C3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x912 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2DE JUMPI MLOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x141F JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 CODESIZE PUSH2 0x1353 JUMP JUMPDEST DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x13B6 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x64 SWAP2 PUSH1 0x0 SWAP4 PUSH1 0x40 MLOAD SWAP3 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x150C JUMPI JUMPDEST POP ISZERO PUSH2 0x14AE JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x14A6 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"489:6056:44:-:0;;;;856:13:41;837:32;;1560:60;;;726:80;489:6056:44;;654:20:41;489:6056:44;;;;856:13:41;489:6056:44;;;;1614:4:41;489:6056:44;;;;;1560:60:41;;837:32;489:6056:44;;;;;;;;;;;;;;;;;;;;1550:71:41;;489:6056:44;879:74:41;489:6056:44;;;;;;;;;;;;837:32:41;489:6056:44;;;;;;;;;;-1:-1:-1;489:6056:44;;;;;-1:-1:-1;489:6056:44;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":2427,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_6836":{"entryPoint":2387,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_struct_SignatureTransferDetails_calldata_dyn_calldata":{"entryPoint":2980,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes32t_bytes32":{"entryPoint":4400,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_string_calldata":{"entryPoint":2613,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_struct_PermitBatchTransferFrom":{"entryPoint":2683,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_PermitTransferFrom":{"entryPoint":2462,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_array_bytes32_dyn":{"entryPoint":4219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_bytes32_address_uint256_uint256_bytes32":{"entryPoint":null,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_string":{"entryPoint":4264,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_and_zero_memory_array_array_bytes32_dyn":{"entryPoint":4048,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_struct_TokenPermissions_dyn":{"entryPoint":2659,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_struct_SignatureTransferDetails_calldata_dyn_calldata":{"entryPoint":3577,"id":null,"parameterSlots":3,"returnSlots":1},"finalize_allocation":{"entryPoint":2322,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_10270":{"entryPoint":2238,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_10275":{"entryPoint":2266,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_12076":{"entryPoint":2294,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_6849":{"entryPoint":2163,"id":null,"parameterSlots":1,"returnSlots":0},"fun_DOMAIN_SEPARATOR":{"entryPoint":3029,"id":5893,"parameterSlots":0,"returnSlots":1},"fun__permitTransferFrom":{"entryPoint":3593,"id":6303,"parameterSlots":7,"returnSlots":0},"fun_hashTokenPermissions":{"entryPoint":4307,"id":7263,"parameterSlots":1,"returnSlots":1},"fun_hashTypedData":{"entryPoint":3434,"id":5937,"parameterSlots":1,"returnSlots":1},"fun_permitTransferFrom":{"entryPoint":3216,"id":6131,"parameterSlots":5,"returnSlots":0},"fun_safeTransferFrom":{"entryPoint":5173,"id":9139,"parameterSlots":4,"returnSlots":0},"fun_useUnorderedNonce":{"entryPoint":3932,"id":6397,"parameterSlots":2,"returnSlots":0},"fun_verify":{"entryPoint":4422,"id":7463,"parameterSlots":4,"returnSlots":0},"increment_uint256":{"entryPoint":4127,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_struct_TokenPermissions_dyn":{"entryPoint":3510,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"5847":[{"length":32,"start":3070}],"5849":[{"length":32,"start":3032}]},"linkReferences":{},"object":"6040608081526004908136101561001557600080fd5b600090813560e01c8063137c29fe1461067c57806330f28b7a1461057c5780633644e5151461053b5780633ff9dcb1146104bb5780634fe02b441461044b578063edd9444b146102e25763fe8ec1a71461006e57600080fd5b346102de5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff83358181116102da576100bc9036908601610a7b565b6024358281116102d6576100d39036908701610ba4565b6100db61097b565b916084358581116102d2576100f39036908a01610a35565b98909560a4359081116102ce5761010c91369101610a35565b96909581519061011b826108be565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b91816101ca6020850180966110a8565b918237018a815203996102037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282610912565b5190209085515161021381610fd0565b908a5b8181106102a157505061029e999a6102959183516102488161023c60208201809561107b565b03848101835282610912565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282610912565b51902093610e09565b80f35b806102b96102b36102c9938c51610db6565b516110d3565b6102c38286610db6565b5261101f565b610216565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346102de5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff9080358281116102da576103339036908301610a7b565b6024358381116102d65761034a9036908401610ba4565b93909261035561097b565b916064359081116104475761036c91369101610a35565b9490938351519761037c89610fd0565b98885b81811061042557505061029e979881516103cd816103a160208201809561107b565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610912565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a08152610295816108f6565b808b6102c38261043c6102b3610442968d51610db6565b92610db6565b61037f565b8680fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7573573ffffffffffffffffffffffffffffffffffffffff81168091036104b757828291602094528084528181206024358252845220549051908152f35b8280fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b50346102de57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de57602090610575610bd5565b9051908152f35b508290346104b7576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576105b83661099e565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576105ea610953565b9160e43567ffffffffffffffff81116106785761029e9461060d91369101610a35565b93909261061a83516110d3565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a0815261066f816108f6565b51902091610c90565b8580fd5b5082346104b7576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576106b73661099e565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576106e9610953565b67ffffffffffffffff9390610104358581116104475761070c9036908601610a35565b9093610124359687116102d25761072c61066f9661029e98369101610a35565b96909582519061073b826108be565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816107ea6020850180966110a8565b918237018b815203936108237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282610912565b5190209261083186516110d3565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e08101610289565b6060810190811067ffffffffffffffff82111761088f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761088f57604052565b6080810190811067ffffffffffffffff82111761088f57604052565b60c0810190811067ffffffffffffffff82111761088f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761088f57604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0190608082126109765760408051906109d782610873565b8082941261097657805181810181811067ffffffffffffffff82111761088f57825260043573ffffffffffffffffffffffffffffffffffffffff81168103610976578152602435602082015282526044356020830152606435910152565b9181601f840112156109765782359167ffffffffffffffff8311610976576020838186019501011161097657565b67ffffffffffffffff811161088f5760051b60200190565b919091606081840312610976576040805191610a9683610873565b8294813567ffffffffffffffff9081811161097657830182601f82011215610976578035610ac381610a63565b92610ad087519485610912565b818452602094858086019360061b85010193818511610976579086899897969594939201925b848410610b13575050505050855280820135908501520135910152565b9091929394959697848303126109765788519089820182811085821117610b76578a5284359073ffffffffffffffffffffffffffffffffffffffff82168203610976578289928c9452828701358382015281520193019190889796959493610af6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9181601f840112156109765782359167ffffffffffffffff8311610976576020808501948460061b01011161097657565b467f000000000000000000000000000000000000000000000000000000000000000003610c20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152610c8a816108be565b51902090565b9192909360a435936040840151804211610d395750602084510151808611610d085750918591610cd0610cd694610ccb602088015186610f5c565b610d6a565b91611146565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361097657610d0693611435565b565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b610d72610bd5565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610c8a816108da565b8051821015610dca5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9190811015610dca5760061b0190565b90919593958151519560409586840151804211610f2c5750828803610f0357610e41918691610cd060209b610ccb8d89015186610f5c565b600091825b878110610e5857505050505050505050565b610e63818351610db6565b5189610e70838689610df9565b0135908a810151808311610ed3575081610e8f575b5050600101610e46565b73ffffffffffffffffffffffffffffffffffffffff80915116610eb384878a610df9565b3591821682036104475791610ecc918960019594611435565b9038610e85565b6024908a51907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600487517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908851907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615610fa657565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90610fda82610a63565b610fe76040519182610912565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110158294610a63565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104c5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611094575050505090565b835185529381019392810192600101611086565b9081519160005b8381106110c0575050016000815290565b80602080928401015181850152016110af565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152610c8a816108da565b9190826040910312610976576020823592013590565b6000843b6112ad57506041820361122b5761116382820182611130565b93909260401015610dca5760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa1561121f5773ffffffffffffffffffffffffffffffffffffffff80600051169182156111f55716036111cb57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b604082036112835761123f91810190611130565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff821161104c5760209360009360ff608094611181565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa90811561142a5782916113a9575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361137f57565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d8211611422575b816113c360209383610912565b810103126102de5751907fffffffff000000000000000000000000000000000000000000000000000000008216820361141f57507fffffffff000000000000000000000000000000000000000000000000000000009038611353565b80fd5b3d91506113b6565b6040513d84823e3d90fd5b92602092606491600093604051927f23b872dd00000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8092166004850152166024830152604482015282855af19081601f3d1160016000511416151661150c575b50156114ae57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d17159050386114a656fea164736f6c6343000811000a","opcodes":"PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 SWAP1 DUP2 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x137C29FE EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x30F28B7A EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x3FF9DCB1 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x4FE02B44 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0xEDD9444B EQ PUSH2 0x2E2 JUMPI PUSH4 0xFE8EC1A7 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2DE JUMPI PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x2DE JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2DA JUMPI PUSH2 0xBC SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x2D6 JUMPI PUSH2 0xD3 SWAP1 CALLDATASIZE SWAP1 DUP8 ADD PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x97B JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x2D2 JUMPI PUSH2 0xF3 SWAP1 CALLDATASIZE SWAP1 DUP11 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP9 SWAP1 SWAP6 PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2CE JUMPI PUSH2 0x10C SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP2 MLOAD SWAP1 PUSH2 0x11B DUP3 PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x6B DUP3 MSTORE PUSH32 0x5065726D697442617463685769746E6573735472616E7366657246726F6D2854 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6F6B656E5065726D697373696F6E735B5D207065726D69747465642C61646472 DUP4 DUP4 ADD MSTORE PUSH32 0x657373207370656E6465722C75696E74323536206E6F6E63652C75696E743235 PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x3620646561646C696E652C000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP3 MLOAD SWAP11 DUP12 SWAP2 DUP2 PUSH2 0x1CA PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x10A8 JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP11 DUP2 MSTORE SUB SWAP10 PUSH2 0x203 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP12 DUP13 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 DUP6 MLOAD MLOAD PUSH2 0x213 DUP2 PUSH2 0xFD0 JUMP JUMPDEST SWAP1 DUP11 JUMPDEST DUP2 DUP2 LT PUSH2 0x2A1 JUMPI POP POP PUSH2 0x29E SWAP10 SWAP11 PUSH2 0x295 SWAP2 DUP4 MLOAD PUSH2 0x248 DUP2 PUSH2 0x23C PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x107B JUMP JUMPDEST SUB DUP5 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP10 DUP2 ADD MLOAD DUP6 DUP12 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP4 PUSH2 0xE09 JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP1 PUSH2 0x2B9 PUSH2 0x2B3 PUSH2 0x2C9 SWAP4 DUP13 MLOAD PUSH2 0xDB6 JUMP JUMPDEST MLOAD PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0x2C3 DUP3 DUP7 PUSH2 0xDB6 JUMP JUMPDEST MSTORE PUSH2 0x101F JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST DUP9 DUP1 REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x2DE JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x2DE JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x2DA JUMPI PUSH2 0x333 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x2D6 JUMPI PUSH2 0x34A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0xBA4 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0x355 PUSH2 0x97B JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x447 JUMPI PUSH2 0x36C SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 DUP4 MLOAD MLOAD SWAP8 PUSH2 0x37C DUP10 PUSH2 0xFD0 JUMP JUMPDEST SWAP9 DUP9 JUMPDEST DUP2 DUP2 LT PUSH2 0x425 JUMPI POP POP PUSH2 0x29E SWAP8 SWAP9 DUP2 MLOAD PUSH2 0x3CD DUP2 PUSH2 0x3A1 PUSH1 0x20 DUP3 ADD DUP1 SWAP6 PUSH2 0x107B JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x20 DUP7 ADD MLOAD DUP3 DUP8 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0xFCF35F5AC6A2C28868DC44C302166470266239195F02B0EE408334829333B766 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x295 DUP2 PUSH2 0x8F6 JUMP JUMPDEST DUP1 DUP12 PUSH2 0x2C3 DUP3 PUSH2 0x43C PUSH2 0x2B3 PUSH2 0x442 SWAP7 DUP14 MLOAD PUSH2 0xDB6 JUMP JUMPDEST SWAP3 PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST DUP7 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x4B7 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0x4B7 JUMPI DUP3 DUP3 SWAP2 PUSH1 0x20 SWAP5 MSTORE DUP1 DUP5 MSTORE DUP2 DUP2 KECCAK256 PUSH1 0x24 CALLDATALOAD DUP3 MSTORE DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x4B7 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI PUSH32 0x3704902F963766A4E561BBAAB6E6CDC1B1DD12F6E9E99648DA8843B3F46B918D SWAP1 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD CALLER DUP6 MSTORE DUP5 PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP2 DUP6 KECCAK256 DUP2 DUP2 SLOAD OR SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE CALLER SWAP3 LOG2 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2DE JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x2DE JUMPI PUSH1 0x20 SWAP1 PUSH2 0x575 PUSH2 0xBD5 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x4B7 JUMPI PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI PUSH2 0x5B8 CALLDATASIZE PUSH2 0x99E JUMP JUMPDEST SWAP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x2DA JUMPI PUSH2 0x5EA PUSH2 0x953 JUMP JUMPDEST SWAP2 PUSH1 0xE4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x678 JUMPI PUSH2 0x29E SWAP5 PUSH2 0x60D SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH2 0x61A DUP4 MLOAD PUSH2 0x10D3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD DUP3 DUP6 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP5 PUSH32 0x939C21A48A8DBE3A9A2404A1D46691E4D39F6583D6EC6B35714604C986D80106 DUP7 MSTORE DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x66F DUP2 PUSH2 0x8F6 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 PUSH2 0xC90 JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x4B7 JUMPI PUSH2 0x140 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x4B7 JUMPI PUSH2 0x6B7 CALLDATASIZE PUSH2 0x99E JUMP JUMPDEST SWAP2 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x2DA JUMPI PUSH2 0x6E9 PUSH2 0x953 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 SWAP1 PUSH2 0x104 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x447 JUMPI PUSH2 0x70C SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP1 SWAP4 PUSH2 0x124 CALLDATALOAD SWAP7 DUP8 GT PUSH2 0x2D2 JUMPI PUSH2 0x72C PUSH2 0x66F SWAP7 PUSH2 0x29E SWAP9 CALLDATASIZE SWAP2 ADD PUSH2 0xA35 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 DUP3 MLOAD SWAP1 PUSH2 0x73B DUP3 PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x64 DUP3 MSTORE PUSH32 0x5065726D69745769746E6573735472616E7366657246726F6D28546F6B656E50 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x65726D697373696F6E73207065726D69747465642C6164647265737320737065 DUP5 DUP4 ADD MSTORE PUSH32 0x6E6465722C75696E74323536206E6F6E63652C75696E7432353620646561646C PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x696E652C00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP4 MLOAD SWAP5 DUP6 SWAP2 DUP2 PUSH2 0x7EA PUSH1 0x20 DUP6 ADD DUP1 SWAP7 PUSH2 0x10A8 JUMP JUMPDEST SWAP2 DUP3 CALLDATACOPY ADD DUP12 DUP2 MSTORE SUB SWAP4 PUSH2 0x823 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x912 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 PUSH2 0x831 DUP7 MLOAD PUSH2 0x10D3 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP2 ADD MLOAD DUP6 DUP10 ADD MLOAD SWAP6 MLOAD SWAP2 DUP3 ADD SWAP7 DUP8 MSTORE PUSH1 0x40 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP3 PUSH1 0xE0 DUP2 ADD PUSH2 0x289 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD SWAP1 PUSH1 0x80 DUP3 SLT PUSH2 0x976 JUMPI PUSH1 0x40 DUP1 MLOAD SWAP1 PUSH2 0x9D7 DUP3 PUSH2 0x873 JUMP JUMPDEST DUP1 DUP3 SWAP5 SLT PUSH2 0x976 JUMPI DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x88F JUMPI DUP3 MSTORE PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x976 JUMPI DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x976 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x976 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x976 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x88F JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x976 JUMPI PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0xA96 DUP4 PUSH2 0x873 JUMP JUMPDEST DUP3 SWAP5 DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x976 JUMPI DUP4 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x976 JUMPI DUP1 CALLDATALOAD PUSH2 0xAC3 DUP2 PUSH2 0xA63 JUMP JUMPDEST SWAP3 PUSH2 0xAD0 DUP8 MLOAD SWAP5 DUP6 PUSH2 0x912 JUMP JUMPDEST DUP2 DUP5 MSTORE PUSH1 0x20 SWAP5 DUP6 DUP1 DUP7 ADD SWAP4 PUSH1 0x6 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x976 JUMPI SWAP1 DUP7 DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 ADD SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0xB13 JUMPI POP POP POP POP POP DUP6 MSTORE DUP1 DUP3 ADD CALLDATALOAD SWAP1 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 DUP5 DUP4 SUB SLT PUSH2 0x976 JUMPI DUP9 MLOAD SWAP1 DUP10 DUP3 ADD DUP3 DUP2 LT DUP6 DUP3 GT OR PUSH2 0xB76 JUMPI DUP11 MSTORE DUP5 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI DUP3 DUP10 SWAP3 DUP13 SWAP5 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP2 SWAP1 DUP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x24 PUSH1 0x0 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x976 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x976 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x976 JUMPI JUMP JUMPDEST CHAINID PUSH32 0x0 SUB PUSH2 0xC20 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP3 MSTORE PUSH32 0x9AC997416E8FF9D2FF6BEBEB7149F65CDAE5E32E2B90440B566BB3044041D36A PUSH1 0x40 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP2 MSTORE PUSH2 0xC8A DUP2 PUSH2 0x8BE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP4 PUSH1 0x40 DUP5 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0xD39 JUMPI POP PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP1 DUP7 GT PUSH2 0xD08 JUMPI POP SWAP2 DUP6 SWAP2 PUSH2 0xCD0 PUSH2 0xCD6 SWAP5 PUSH2 0xCCB PUSH1 0x20 DUP9 ADD MLOAD DUP7 PUSH2 0xF5C JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST SWAP2 PUSH2 0x1146 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 MLOAD MLOAD AND SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x976 JUMPI PUSH2 0xD06 SWAP4 PUSH2 0x1435 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0xD72 PUSH2 0xBD5 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0xC8A DUP2 PUSH2 0x8DA JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP6 SWAP4 SWAP6 DUP2 MLOAD MLOAD SWAP6 PUSH1 0x40 SWAP6 DUP7 DUP5 ADD MLOAD DUP1 TIMESTAMP GT PUSH2 0xF2C JUMPI POP DUP3 DUP9 SUB PUSH2 0xF03 JUMPI PUSH2 0xE41 SWAP2 DUP7 SWAP2 PUSH2 0xCD0 PUSH1 0x20 SWAP12 PUSH2 0xCCB DUP14 DUP10 ADD MLOAD DUP7 PUSH2 0xF5C JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 JUMPDEST DUP8 DUP2 LT PUSH2 0xE58 JUMPI POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE63 DUP2 DUP4 MLOAD PUSH2 0xDB6 JUMP JUMPDEST MLOAD DUP10 PUSH2 0xE70 DUP4 DUP7 DUP10 PUSH2 0xDF9 JUMP JUMPDEST ADD CALLDATALOAD SWAP1 DUP11 DUP2 ADD MLOAD DUP1 DUP4 GT PUSH2 0xED3 JUMPI POP DUP2 PUSH2 0xE8F JUMPI JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0xE46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 MLOAD AND PUSH2 0xEB3 DUP5 DUP8 DUP11 PUSH2 0xDF9 JUMP JUMPDEST CALLDATALOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x447 JUMPI SWAP2 PUSH2 0xECC SWAP2 DUP10 PUSH1 0x1 SWAP6 SWAP5 PUSH2 0x1435 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0xE85 JUMP JUMPDEST PUSH1 0x24 SWAP1 DUP11 MLOAD SWAP1 PUSH32 0x3728B83D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x4 DUP8 MLOAD PUSH32 0xFF633A3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 DUP9 MLOAD SWAP1 PUSH32 0xCD21DB4F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SHR PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD XOR DUP1 SWAP2 SSTORE AND ISZERO PUSH2 0xFA6 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x756688FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 PUSH2 0xFDA DUP3 PUSH2 0xA63 JUMP JUMPDEST PUSH2 0xFE7 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x912 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1015 DUP3 SWAP5 PUSH2 0xA63 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x104C JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 SWAP3 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1094 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1086 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x10C0 JUMPI POP POP ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP2 DUP6 ADD MSTORE ADD PUSH2 0x10AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP3 PUSH32 0x618358AC3DB8DC274F0CD8829DA7E234BD48CD73C4A740AEDE1ADEC9846D06A1 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0xC8A DUP2 PUSH2 0x8DA JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x976 JUMPI PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 EXTCODESIZE PUSH2 0x12AD JUMPI POP PUSH1 0x41 DUP3 SUB PUSH2 0x122B JUMPI PUSH2 0x1163 DUP3 DUP3 ADD DUP3 PUSH2 0x1130 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x40 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x40 PUSH1 0x80 SWAP6 ADD CALLDATALOAD PUSH1 0xF8 SHR JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x121F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x0 MLOAD AND SWAP2 DUP3 ISZERO PUSH2 0x11F5 JUMPI AND SUB PUSH2 0x11CB JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP3 SUB PUSH2 0x1283 JUMPI PUSH2 0x123F SWAP2 DUP2 ADD SWAP1 PUSH2 0x1130 JUMP JUMPDEST SWAP2 PUSH1 0x1B PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 PUSH1 0xFF SHR ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x104C JUMPI PUSH1 0x20 SWAP4 PUSH1 0x0 SWAP4 PUSH1 0xFF PUSH1 0x80 SWAP5 PUSH2 0x1181 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4BE6321B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP3 SWAP4 SWAP2 PUSH1 0x1F SWAP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x64 PUSH1 0x20 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP15 DUP16 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP8 ADD MSTORE DUP2 PUSH1 0x44 DUP8 ADD MSTORE DUP7 DUP7 ADD CALLDATACOPY DUP12 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x142A JUMPI DUP3 SWAP2 PUSH2 0x13A9 JUMPI JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 POP AND SUB PUSH2 0x137F JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB0669CBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE DUP3 GT PUSH2 0x1422 JUMPI JUMPDEST DUP2 PUSH2 0x13C3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x912 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2DE JUMPI MLOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x141F JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 CODESIZE PUSH2 0x1353 JUMP JUMPDEST DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x13B6 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x64 SWAP2 PUSH1 0x0 SWAP4 PUSH1 0x40 MLOAD SWAP3 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP3 DUP6 GAS CALL SWAP1 DUP2 PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND ISZERO AND PUSH2 0x150C JUMPI JUMPDEST POP ISZERO PUSH2 0x14AE JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST EXTCODESIZE ISZERO RETURNDATASIZE OR ISZERO SWAP1 POP CODESIZE PUSH2 0x14A6 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"489:6056:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;4678:86:49;;;;1621:102;489:6056:44;4678:86:49;;1621:102;;;:::i;:::-;;;;;;;;4678:86;;;;;;;;;;;;:::i;:::-;489:6056:44;4668:97:49;;4799:16;;;489:6056:44;4873:27:49;;;:::i;:::-;4916:13;;4931:16;;;;;;489:6056:44;;3581:9;489:6056;;5088:234:49;489:6056:44;;;5152:39:49;;1254:173;489:6056:44;5152:39:49;;1254:173;;;:::i;:::-;5152:39;;;;;;;;:::i;:::-;489:6056:44;5142:50:49;;489:6056:44;5238:12:49;;;489:6056:44;5268:15:49;;;489:6056:44;;;5088:234:49;;;489:6056:44;;;1621:102:49;;;489:6056:44;;;;5210:10:49;1621:102;;;489:6056:44;1621:102:49;;;489:6056:44;;;;1621:102:49;;;489:6056:44;;;;;;1621:102:49;;;489:6056:44;;1621:102:49;;;5088:234;;;;;;;;;:::i;:::-;489:6056:44;5065:267:49;;3581:9:44;;:::i;:::-;489:6056;;4949:3:49;5017:16;4995:42;5017:19;4949:3;5017:16;;;:19;:::i;:::-;;4995:42;:::i;:::-;4968:69;;;;:::i;:::-;489:6056:44;4949:3:49;:::i;:::-;4916:13;;489:6056:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;3353:16:49;;;;;489:6056:44;3427:27:49;;;;:::i;:::-;3470:13;;3485:16;;;;;;489:6056:44;;3109:9;489:6056;;;;3734:39:49;;1254:173;489:6056:44;3734:39:49;;1254:173;;;:::i;:::-;3734:39;;;;;;;;:::i;:::-;489:6056:44;3724:50:49;;489:6056:44;3820:12:49;;489:6056:44;3850:15:49;;;489:6056:44;;;;3642:237:49;489:6056:44;3642:237:49;;489:6056:44;1254:173:49;489:6056:44;;1018:166:49;;489:6056:44;3792:10:49;1018:166;;;489:6056:44;;1018:166:49;;489:6056:44;1018:166:49;;;489:6056:44;1018:166:49;3642:237;;;;;:::i;3503:3::-;3571:16;;3522:69;3571:16;3549:42;3571:19;3503:3;3571:16;;;:19;:::i;3549:42::-;3522:69;;:::i;3503:3::-;3470:13;;489:6056:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:53;489:6056;;;;;5273:10;489:6056;;;;;;;;;;;;;;;;;;;5261:40;489:6056;;;;;;;;;;;5273:10;5317:53;;489:6056;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;1157:9;489:6056;;;;;;;:::i;:::-;3029:16:49;;;3007:39;3029:16;;3007:39;:::i;:::-;3163:12;;;489:6056:44;3177:15:49;;;489:6056:44;;;;3086:107:49;3163:12;3086:107;;489:6056:44;1018:166:49;489:6056:44;;1018:166:49;;489:6056:44;3151:10:49;1018:166;;;489:6056:44;1018:166:49;;;489:6056:44;1018:166:49;;;489:6056:44;1018:166:49;3086:107;;;;;:::i;:::-;489:6056:44;3063:140:49;;1157:9:44;;:::i;489:6056::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;4322:94:49;489:6056:44;1622:9;489:6056;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;4133:80:49;;;;1621:102;489:6056:44;4133:80:49;;1621:102;;;:::i;:::-;;;;;;;;4133:80;;;;;;;;;;;;:::i;:::-;489:6056:44;4123:91:49;;4278:16;4256:39;4278:16;;4256:39;:::i;:::-;489:6056:44;4377:12:49;;;489:6056:44;4391:15:49;;;489:6056:44;;;4322:94:49;;;489:6056:44;;;1621:102:49;;;489:6056:44;;;;4365:10:49;1621:102;;;489:6056:44;1621:102:49;;;489:6056:44;;;;1621:102:49;;;489:6056:44;;;;;;1621:102:49;;;489:6056:44;;1621:102:49;;;4322:94;1621:102;489:6056:44;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;1018:166:49;489:6056:44;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;489:6056:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1123:216:41:-;1198:13;1215:16;1198:33;1215:16;;1246:24;1123:216;:::o;1198:134::-;489:6056:44;;1560:60:41;;;489:6056:44;726:80:41;489:6056:44;;654:20:41;489:6056:44;;;;1198:13:41;489:6056:44;;;;1614:4:41;489:6056:44;;;;;1560:60:41;;;;;:::i;:::-;489:6056:44;1550:71:41;;1123:216;:::o;2075:704:44:-;;;;;2338:31;489:6056;2402:15;;;;489:6056;2384:15;;:33;2380:79;;2491:16;2338:31;2491:16;;:23;489:6056;2473:41;;;2469:92;;2598:12;;;;2639:24;2665:5;2598:12;;2338:31;2598:12;;489:6056;2598:12;;:::i;:::-;2639:24;:::i;:::-;2665:5;;:::i;:::-;489:6056;2688:16;;;489:6056;;;;;;;;;;;;2756:15;;;:::i;:::-;2075:704::o;2469:92::-;489:6056;;2402:15;489:6056;2523:38;;;;;;;489:6056;2523:38;2380:79;489:6056;;2402:15;489:6056;2426:33;;;;;;;489:6056;2426:33;1685:167:41;1815:18;;:::i;:::-;489:6056:44;;;1786:58:41;;;;489:6056:44;;;;;;;;;;;;;1786:58:41;;;;;:::i;489:6056:44:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;3937:1194::-;;;;;;4204:16;;489:6056;4260:15;;;;;;489:6056;4242:15;;:33;4238:79;;4331:38;;;;4327:67;;4497:5;4431:12;;;4471:24;4431:12;;;;;;489:6056;4431:12;;:::i;4497:5::-;-1:-1:-1;4543:13:44;;4558:16;;;;;;3937:1194;;;;;;;;;:::o;4576:3::-;4635:19;:16;;;:19;:::i;:::-;;4698:18;;;;;;:::i;:::-;:34;489:6056;4773:16;;;;489:6056;4755:34;;;4751:78;;4852:20;;4848:253;;4576:3;;;489:6056;;4543:13;;4848:253;489:6056;;;;;5043:18;;;;;:::i;:::-;489:6056;;;;;;;;5066:15;;;;489:6056;5066:15;;;:::i;:::-;4848:253;;;;4751:78;489:6056;;;;4798:31;;;;;;;489:6056;4798:31;4327:67;4378:16;489:6056;;4378:16;;;;4238:79;489:6056;;;;4284:33;;;;;;;489:6056;4284:33;6250:293;;489:6056;6408:1;489:6056;;;;;;-1:-1:-1;489:6056:44;-1:-1:-1;489:6056:44;;;-1:-1:-1;489:6056:44;;5992:1;489:6056;-1:-1:-1;489:6056:44;;;;-1:-1:-1;489:6056:44;;;;6447:33;489:6056;;;6495:13;:18;6491:45;;6250:293::o;6491:45::-;6522:14;489:6056;;6522:14;;;;489:6056;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;1254:173:49;489:6056:44;;;;;;1254:173:49;;;;;;;;;;;;;:::o;:::-;;;489:6056:44;;1254:173:49;;;;;;;;;;;;1621:102;;489:6056:44;;1621:102:49;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;5539:229;489:6056:44;;5710:50:49;;;;489:6056:44;895:59:49;489:6056:44;;;895:59:49;;489:6056:44;;895:59:49;;489:6056:44;895:59:49;;;;;489:6056:44;895:59:49;5710:50;;;;;:::i;489:6056:44:-;;;;;;;;;;;;;;;;;:::o;700:1109:51:-;-1:-1:-1;863:25:51;;;;-1:-1:-1;933:2:51;913:22;;933:2;;964:41;;;;;;:::i;:::-;955:50;;625:68;1043:2;625:68;;;;;;-1:-1:-1;625:68:51;489:6056:44;1043:2:51;625:68;;;1033:13;625:68;;909:490;489:6056:44;;;;;;625:68:51;;;;489:6056:44;625:68:51;;489:6056:44;625:68:51;;;489:6056:44;1429:24:51;;;;;;;;;489:6056:44;1429:24:51;-1:-1:-1;1429:24:51;489:6056:44;1471:20:51;;;1467:51;;489:6056:44;1536:23:51;1532:51;;700:1109::o;1532:51::-;1568:15;489:6056:44;;1568:15:51;;;;1467:51;1500:18;489:6056:44;;1500:18:51;;;;1429:24;489:6056:44;;;-1:-1:-1;489:6056:44;;;;;909:490:51;1092:2;1072:22;;1092:2;;1180:41;;;;;;:::i;:::-;1170:51;1312:2;626:66;1243:19;;489:6056:44;;;625:68:51;;489:6056:44;625:68:51;;;;;1280:34;-1:-1:-1;1280:34:51;489:6056:44;625:68:51;1280:34;909:490;;1068:331;1360:24;1092:2;489:6056:44;1360:24:51;;;;859:944;489:6056:44;;;;;;;;1634:57:51;489:6056:44;;;;;;;;;;;;1634:57:51;;;;;;;489:6056:44;;;;;;;;;;;;;;1621:102:49;;;;;;;;489:6056:44;;;;1634:57:51;;489:6056:44;;1634:57:51;;;;;;;;;;;859:944;489:6056:44;;;;;1709:48:51;1705:87;;700:1109::o;1705:87::-;1634:57;489:6056:44;;1766:26:51;;;;1634:57;;;;;;;;;;;;;;;;;:::i;:::-;;;489:6056:44;;;;;;;;;;;;;1634:57:51;489:6056:44;1634:57:51;;;;489:6056:44;;;1634:57:51;;;-1:-1:-1;1634:57:51;;;489:6056:44;;;;;;;;;1187:1639:55;;1391:1378;1187:1639;1391:1378;1187:1639;-1:-1:-1;1391:1378:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1391:1378:55;;;;;;;1187:1639;489:6056:44;;;;1187:1639:55:o;489:6056:44:-;1391:1378:55;;489:6056:44;;;;1391:1378:55;;489:6056:44;;;;1391:1378:55;489:6056:44;;;;1391:1378:55;489:6056:44;;;;1391:1378:55;;;;;;;-1:-1:-1;1391:1378:55;;"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","invalidateUnorderedNonces(uint256,uint256)":"3ff9dcb1","nonceBitmap(address,uint256)":"4fe02b44","permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)":"30f28b7a","permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)":"edd9444b","permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)":"137c29fe","permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)":"fe8ec1a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureDeadline\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wordPos\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"invalidateUnorderedNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonceBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidAmount(uint256)\":[{\"params\":{\"maxAmount\":\"The maximum amount a spender can request to transfer\"}}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}],\"SignatureExpired(uint256)\":[{\"params\":{\"signatureDeadline\":\"The timestamp at which a signature is no longer valid\"}}]},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Uses cached version if chainid and address are unchanged from construction.\"},\"invalidateUnorderedNonces(uint256,uint256)\":{\"details\":\"The wordPos is maxed at type(uint248).max\",\"params\":{\"mask\":\"A bitmap masked against msg.sender's current bitmap at the word position\",\"wordPos\":\"A number to index the nonceBitmap at\"}},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"details\":\"Reverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\"}},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\"}},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definitionReverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}}},\"stateVariables\":{\"nonceBitmap\":{\"details\":\"Uses unordered nonces so that permit messages do not need to be spent in a certain orderThe mapping is indexed first by the token owner, then by an index specified in the nonceIt returns a uint256 bitmapThe index, or wordPosition is capped at type(uint248).max\"}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidAmount(uint256)\":[{\"notice\":\"Thrown when the requested amount for a transfer is larger than the permissioned amount\"}],\"InvalidContractSignature()\":[{\"notice\":\"Thrown when the recovered contract signature is incorrect\"}],\"InvalidNonce()\":[{\"notice\":\"Thrown when validating that the inputted nonce has not been used\"}],\"InvalidSignature()\":[{\"notice\":\"Thrown when the recovered signer is equal to the zero address\"}],\"InvalidSignatureLength()\":[{\"notice\":\"Thrown when the passed in signature is not a valid length\"}],\"InvalidSigner()\":[{\"notice\":\"Thrown when the recovered signer does not equal the claimedSigner\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}],\"SignatureExpired(uint256)\":[{\"notice\":\"Thrown when validating an inputted signature that is stale\"}]},\"events\":{\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"},\"invalidateUnorderedNonces(uint256,uint256)\":{\"notice\":\"Invalidates the bits specified in mask for the bitmap at the word position\"},\"nonceBitmap(address,uint256)\":{\"notice\":\"A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"notice\":\"Transfers a token using a signed permit message\"},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit message\"},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"notice\":\"Transfers a token using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit messageIncludes extra data provided by the caller to verify signature over\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/SignatureTransfer.sol\":\"SignatureTransfer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/EIP712.sol\":{\"keccak256\":\"0x973d4358c262467a4c2a0c2867c676a8a138102968d8b89355c42f655d1a7a68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7219a31ace8c0a959392cc2ee06817c7c98dfc491e96d27f71a09fb23860b62c\",\"dweb:/ipfs/QmUGRLgddHZ3GoouEBoMYbRS4wVGapJrsD2nBxVwxLBibb\"]},\"permit2/src/PermitErrors.sol\":{\"keccak256\":\"0x9fd1192bbc3ffa9354f2bfc534d7a1cdf2be2c940c96ed4ac7bc37991e1e5dfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77f8b2e2c040c33e2c78f05e7e768a17f433c07adb699235c35c4dac92115070\",\"dweb:/ipfs/QmYX2VTyTm6QLtgp54kCrkAGY8uPxkx28urwLNEJsxTHJs\"]},\"permit2/src/SignatureTransfer.sol\":{\"keccak256\":\"0xa821caa24d6231fa8befe24a34bfda2c3b05b56e67fb913c86b26a19b19b6bbe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://584994a77e33aa2fe804b803ab302cb811ee945632b76f68d78db761b18a24a2\",\"dweb:/ipfs/QmVd67VRKX24tSaREBNwhzVfU6xxqRLNEoPY6CYgG3xU5W\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x96f516510d08da5b1d05d81b0bd88af6f9928bb757ba55c27e203654dfcd4fa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0942604688c369aed50905d7cef2ece68e1ff457c95a14c9f913babac29a09a\",\"dweb:/ipfs/Qmf4ZBYCKqQHfnACciz8GEMhwxPw7mhQ6fjGXwpgr8CQF8\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xbab1c35f0a63761be6b50a9a2ce2459b63f09587dd9c6ac46955252a1a04f43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://225dca1a3d91c0737fe75c72bfecae391fc2e7b2eb2ebe1a154bfb16a7527972\",\"dweb:/ipfs/QmdGQdUCANKZ6S23TyHDtBnGvr6CtyyqNNcziVTjEHJ5rk\"]},\"permit2/src/libraries/PermitHash.sol\":{\"keccak256\":\"0x54af80d9c3193934c6947c31f59b8f3d7918f83676fe92ed6136593ad591d478\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5264001770be2cdeb7651e4d22af7edbc4e16da6d38747efeb4f54b5472ca5c5\",\"dweb:/ipfs/QmPvwau7DXw6stGQ14hpyTeLdYDYrrrdMnUfkQTPpMXQxz\"]},\"permit2/src/libraries/SignatureVerification.sol\":{\"keccak256\":\"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab\",\"dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i\"]},\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}},"permit2/src/interfaces/IAllowanceTransfer.sol":{"IAllowanceTransfer":{"abi":[{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"AllowanceExpired","type":"error"},{"inputs":[],"name":"ExcessiveInvalidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"Lockdown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint48","name":"newNonce","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"oldNonce","type":"uint48"}],"name":"NonceInvalidation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"nonce","type":"uint48"}],"name":"Permit","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint48","name":"newNonce","type":"uint48"}],"name":"invalidateNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"internalType":"struct IAllowanceTransfer.TokenSpenderPair[]","name":"approvals","type":"tuple[]"}],"name":"lockdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permitBatch","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct IAllowanceTransfer.AllowanceTransferDetails[]","name":"transferDetails","type":"tuple[]"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address,address)":"927da105","approve(address,address,uint160,uint48)":"87517c45","invalidateNonces(address,address,uint48)":"65d9723c","lockdown((address,address)[])":"cc53287f","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"2a2d80d1","transferFrom((address,address,uint160,address)[])":"0d58b1db","transferFrom(address,address,uint160,address)":"36c78516"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"Lockdown\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"oldNonce\",\"type\":\"uint48\"}],\"name\":\"NonceInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"name\":\"Permit\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"}],\"name\":\"invalidateNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.TokenSpenderPair[]\",\"name\":\"approvals\",\"type\":\"tuple[]\"}],\"name\":\"lockdown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.AllowanceTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Requires user's token approval on the Permit2 contract\",\"errors\":{\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}]},\"kind\":\"dev\",\"methods\":{\"allowance(address,address,address)\":{\"details\":\"The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\"},\"approve(address,address,uint160,uint48)\":{\"details\":\"The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval\",\"params\":{\"amount\":\"The approved amount of the token\",\"expiration\":\"The timestamp at which the approval is no longer valid\",\"spender\":\"The spender address to approve\",\"token\":\"The token to approve\"}},\"invalidateNonces(address,address,uint48)\":{\"details\":\"Can't invalidate more than 2**16 nonces per transaction.\",\"params\":{\"newNonce\":\"The new nonce to set. Invalidates all nonces less than it.\",\"spender\":\"The spender to invalidate nonces for\",\"token\":\"The token to invalidate nonces for\"}},\"lockdown((address,address)[])\":{\"params\":{\"approvals\":\"Array of approvals to revoke.\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitSingle\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitBatch\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"transferFrom((address,address,uint160,address)[])\":{\"details\":\"Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"transferDetails\":\"Array of owners, recipients, amounts, and tokens for the transfers\"}},\"transferFrom(address,address,uint160,address)\":{\"details\":\"Requires the from address to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"amount\":\"The amount of the token to transfer\",\"from\":\"The address to transfer from\",\"to\":\"The address of the recipient\",\"token\":\"The token address to transfer\"}}},\"title\":\"AllowanceTransfer\",\"version\":1},\"userdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"ExcessiveInvalidation()\":[{\"notice\":\"Thrown when too many nonces are invalidated.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}]},\"events\":{\"Approval(address,address,address,uint160,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions on a token for the spender.\"},\"Lockdown(address,address,address)\":{\"notice\":\"Emits an event when the owner sets the allowance back to 0 with the lockdown function.\"},\"NonceInvalidation(address,address,address,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully invalidates an ordered nonce.\"},\"Permit(address,address,address,uint160,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,address)\":{\"notice\":\"A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\"},\"approve(address,address,uint160,uint48)\":{\"notice\":\"Approves the spender to use up to amount of the specified token up until the expiration\"},\"invalidateNonces(address,address,uint48)\":{\"notice\":\"Invalidate nonces for a given (token, spender) pair\"},\"lockdown((address,address)[])\":{\"notice\":\"Enables performing a \\\"lockdown\\\" of the sender's Permit2 identity by batch revoking approvals\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\"},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\"},\"transferFrom((address,address,uint160,address)[])\":{\"notice\":\"Transfer approved tokens in a batch\"},\"transferFrom(address,address,uint160,address)\":{\"notice\":\"Transfer approved tokens from one address to another\"}},\"notice\":\"Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/interfaces/IAllowanceTransfer.sol\":\"IAllowanceTransfer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]}},\"version\":1}"}},"permit2/src/interfaces/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"The bytes4 magic value 0x1626ba7e\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x96f516510d08da5b1d05d81b0bd88af6f9928bb757ba55c27e203654dfcd4fa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0942604688c369aed50905d7cef2ece68e1ff457c95a14c9f913babac29a09a\",\"dweb:/ipfs/Qmf4ZBYCKqQHfnACciz8GEMhwxPw7mhQ6fjGXwpgr8CQF8\"]}},\"version\":1}"}},"permit2/src/interfaces/ISignatureTransfer.sol":{"ISignatureTransfer":{"abi":[{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"word","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mask","type":"uint256"}],"name":"UnorderedNonceInvalidation","type":"event"},{"inputs":[{"internalType":"uint256","name":"wordPos","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"}],"name":"invalidateUnorderedNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonceBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"invalidateUnorderedNonces(uint256,uint256)":"3ff9dcb1","nonceBitmap(address,uint256)":"4fe02b44","permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)":"30f28b7a","permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)":"edd9444b","permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)":"137c29fe","permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)":"fe8ec1a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wordPos\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"invalidateUnorderedNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonceBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Requires user's token approval on the Permit2 contract\",\"errors\":{\"InvalidAmount(uint256)\":[{\"params\":{\"maxAmount\":\"The maximum amount a spender can request to transfer\"}}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}]},\"kind\":\"dev\",\"methods\":{\"invalidateUnorderedNonces(uint256,uint256)\":{\"details\":\"The wordPos is maxed at type(uint248).max\",\"params\":{\"mask\":\"A bitmap masked against msg.sender's current bitmap at the word position\",\"wordPos\":\"A number to index the nonceBitmap at\"}},\"nonceBitmap(address,uint256)\":{\"details\":\"Uses unordered nonces so that permit messages do not need to be spent in a certain orderThe mapping is indexed first by the token owner, then by an index specified in the nonceIt returns a uint256 bitmapThe index, or wordPosition is capped at type(uint248).max\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"details\":\"Reverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\"}},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\"}},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definitionReverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}}},\"title\":\"SignatureTransfer\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidAmount(uint256)\":[{\"notice\":\"Thrown when the requested amount for a transfer is larger than the permissioned amount\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}]},\"events\":{\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{\"invalidateUnorderedNonces(uint256,uint256)\":{\"notice\":\"Invalidates the bits specified in mask for the bitmap at the word position\"},\"nonceBitmap(address,uint256)\":{\"notice\":\"A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"notice\":\"Transfers a token using a signed permit message\"},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit message\"},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"notice\":\"Transfers a token using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit messageIncludes extra data provided by the caller to verify signature over\"}},\"notice\":\"Handles ERC20 token transfers through signature based actions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/interfaces/ISignatureTransfer.sol\":\"ISignatureTransfer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xbab1c35f0a63761be6b50a9a2ce2459b63f09587dd9c6ac46955252a1a04f43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://225dca1a3d91c0737fe75c72bfecae391fc2e7b2eb2ebe1a154bfb16a7527972\",\"dweb:/ipfs/QmdGQdUCANKZ6S23TyHDtBnGvr6CtyyqNNcziVTjEHJ5rk\"]}},\"version\":1}"}},"permit2/src/libraries/Allowance.sol":{"Allowance":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"132:1772:48:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"132:1772:48:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/libraries/Allowance.sol\":\"Allowance\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/libraries/Allowance.sol\":{\"keccak256\":\"0x65ee20fb1a77d4e25dff2feb84027ff9096b065b6fc064c80f9eee49f1f9d498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f65d62fc64a55b6e3aad9932959ab3f47d701c45f95622215aca0ba076f1a7d\",\"dweb:/ipfs/QmZjDb4Nq9pssFefg8X9bwJNJ4RJEPD8vCaFR2Ur2N4boD\"]}},\"version\":1}"}},"permit2/src/libraries/PermitHash.sol":{"PermitHash":{"abi":[{"inputs":[],"name":"_PERMIT_BATCH_TRANSFER_FROM_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PERMIT_BATCH_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PERMIT_BATCH_WITNESS_TRANSFER_FROM_TYPEHASH_STUB","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PERMIT_DETAILS_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PERMIT_SINGLE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PERMIT_TRANSFER_FROM_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PERMIT_TRANSFER_FROM_WITNESS_TYPEHASH_STUB","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TOKEN_PERMISSIONS_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TOKEN_PERMISSIONS_TYPESTRING","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523461001a576105a29081610020823930815050f35b600080fdfe60806040818152600436101561001457600080fd5b600091823560e01c9081633eb8b8fd146104dc57508063415e982d146104895780636302c3cf146104365780636e4f2775146103e357806378f168301461039057806384b8efbb146102a057806390bbf2f3146101b0578063c0c7fa7e146100db5763c5df4f031461008557600080fd5b817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d08152f35b5080fd5b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d7578051906060820182811067ffffffffffffffff8211176101835761017f93508152602e82527f546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c7560208301527f696e7432353620616d6f756e742900000000000000000000000000000000000081830152519182918261052f565b0390f35b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75780519060a0820182811067ffffffffffffffff8211176101835761017f93508152606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472818301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c0000000000000000000000000000000000000000006080830152519182918261052f565b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75780519060a0820182811067ffffffffffffffff8211176101835761017f93508152606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065818301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c000000000000000000000000000000000000000000000000000000006080830152519182918261052f565b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068152f35b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b36788152f35b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638152f35b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a18152f35b8390817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757807ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b76660209252f35b60208082528251818301819052939260005b858110610581575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b81810183015184820160400152820161054156fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x1A JUMPI PUSH2 0x5A2 SWAP1 DUP2 PUSH2 0x20 DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x3EB8B8FD EQ PUSH2 0x4DC JUMPI POP DUP1 PUSH4 0x415E982D EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0x6302C3CF EQ PUSH2 0x436 JUMPI DUP1 PUSH4 0x6E4F2775 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x78F16830 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x84B8EFBB EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x90BBF2F3 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xC0C7FA7E EQ PUSH2 0xDB JUMPI PUSH4 0xC5DF4F03 EQ PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0xF3841CD1FF0085026A6327B620B67997CE40F282C88A8E905A7A5626E310F3D0 DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x183 JUMPI PUSH2 0x17F SWAP4 POP DUP2 MSTORE PUSH1 0x2E DUP3 MSTORE PUSH32 0x546F6B656E5065726D697373696F6E73286164647265737320746F6B656E2C75 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x696E7432353620616D6F756E7429000000000000000000000000000000000000 DUP2 DUP4 ADD MSTORE MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x52F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0xA0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x183 JUMPI PUSH2 0x17F SWAP4 POP DUP2 MSTORE PUSH1 0x6B DUP3 MSTORE PUSH32 0x5065726D697442617463685769746E6573735472616E7366657246726F6D2854 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6F6B656E5065726D697373696F6E735B5D207065726D69747465642C61646472 DUP2 DUP4 ADD MSTORE PUSH32 0x657373207370656E6465722C75696E74323536206E6F6E63652C75696E743235 PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x3620646561646C696E652C000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x52F JUMP JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0xA0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x183 JUMPI PUSH2 0x17F SWAP4 POP DUP2 MSTORE PUSH1 0x64 DUP3 MSTORE PUSH32 0x5065726D69745769746E6573735472616E7366657246726F6D28546F6B656E50 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x65726D697373696F6E73207065726D69747465642C6164647265737320737065 DUP2 DUP4 ADD MSTORE PUSH32 0x6E6465722C75696E74323536206E6F6E63652C75696E7432353620646561646C PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x696E652C00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x52F JUMP JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x939C21A48A8DBE3A9A2404A1D46691E4D39F6583D6EC6B35714604C986D80106 DUP2 MSTORE RETURN JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x65626CAD6CB96493BF6F5EBEA28756C966F023AB9E8A83A7101849D5573B3678 DUP2 MSTORE RETURN JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0xAF1B0D30D2CAB0380E68F0689007E3254993C596F2FDD0AAA7F4D04F79440863 DUP2 MSTORE RETURN JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x618358AC3DB8DC274F0CD8829DA7E234BD48CD73C4A740AEDE1ADEC9846D06A1 DUP2 MSTORE RETURN JUMPDEST DUP4 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 PUSH32 0xFCF35F5AC6A2C28868DC44C302166470266239195F02B0EE408334829333B766 PUSH1 0x20 SWAP3 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP2 DUP4 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP3 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0x581 JUMPI POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x40 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 ADD DUP4 ADD MLOAD DUP5 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x541 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"205:5565:49:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_encode_string":{"entryPoint":1327,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040818152600436101561001457600080fd5b600091823560e01c9081633eb8b8fd146104dc57508063415e982d146104895780636302c3cf146104365780636e4f2775146103e357806378f168301461039057806384b8efbb146102a057806390bbf2f3146101b0578063c0c7fa7e146100db5763c5df4f031461008557600080fd5b817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d08152f35b5080fd5b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d7578051906060820182811067ffffffffffffffff8211176101835761017f93508152602e82527f546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c7560208301527f696e7432353620616d6f756e742900000000000000000000000000000000000081830152519182918261052f565b0390f35b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75780519060a0820182811067ffffffffffffffff8211176101835761017f93508152606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472818301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c0000000000000000000000000000000000000000006080830152519182918261052f565b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75780519060a0820182811067ffffffffffffffff8211176101835761017f93508152606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065818301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c000000000000000000000000000000000000000000000000000000006080830152519182918261052f565b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068152f35b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b36788152f35b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638152f35b50817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602090517f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a18152f35b8390817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757807ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b76660209252f35b60208082528251818301819052939260005b858110610581575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b81810183015184820160400152820161054156fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x3EB8B8FD EQ PUSH2 0x4DC JUMPI POP DUP1 PUSH4 0x415E982D EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0x6302C3CF EQ PUSH2 0x436 JUMPI DUP1 PUSH4 0x6E4F2775 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x78F16830 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x84B8EFBB EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x90BBF2F3 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xC0C7FA7E EQ PUSH2 0xDB JUMPI PUSH4 0xC5DF4F03 EQ PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0xF3841CD1FF0085026A6327B620B67997CE40F282C88A8E905A7A5626E310F3D0 DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x183 JUMPI PUSH2 0x17F SWAP4 POP DUP2 MSTORE PUSH1 0x2E DUP3 MSTORE PUSH32 0x546F6B656E5065726D697373696F6E73286164647265737320746F6B656E2C75 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x696E7432353620616D6F756E7429000000000000000000000000000000000000 DUP2 DUP4 ADD MSTORE MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x52F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0xA0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x183 JUMPI PUSH2 0x17F SWAP4 POP DUP2 MSTORE PUSH1 0x6B DUP3 MSTORE PUSH32 0x5065726D697442617463685769746E6573735472616E7366657246726F6D2854 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6F6B656E5065726D697373696F6E735B5D207065726D69747465642C61646472 DUP2 DUP4 ADD MSTORE PUSH32 0x657373207370656E6465722C75696E74323536206E6F6E63652C75696E743235 PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x3620646561646C696E652C000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x52F JUMP JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0xA0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x183 JUMPI PUSH2 0x17F SWAP4 POP DUP2 MSTORE PUSH1 0x64 DUP3 MSTORE PUSH32 0x5065726D69745769746E6573735472616E7366657246726F6D28546F6B656E50 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x65726D697373696F6E73207065726D69747465642C6164647265737320737065 DUP2 DUP4 ADD MSTORE PUSH32 0x6E6465722C75696E74323536206E6F6E63652C75696E7432353620646561646C PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x696E652C00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x52F JUMP JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x939C21A48A8DBE3A9A2404A1D46691E4D39F6583D6EC6B35714604C986D80106 DUP2 MSTORE RETURN JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x65626CAD6CB96493BF6F5EBEA28756C966F023AB9E8A83A7101849D5573B3678 DUP2 MSTORE RETURN JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0xAF1B0D30D2CAB0380E68F0689007E3254993C596F2FDD0AAA7F4D04F79440863 DUP2 MSTORE RETURN JUMPDEST POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x618358AC3DB8DC274F0CD8829DA7E234BD48CD73C4A740AEDE1ADEC9846D06A1 DUP2 MSTORE RETURN JUMPDEST DUP4 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD7 JUMPI DUP1 PUSH32 0xFCF35F5AC6A2C28868DC44C302166470266239195F02B0EE408334829333B766 PUSH1 0x20 SWAP3 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP2 DUP4 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP3 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0x581 JUMPI POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x40 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 ADD DUP4 ADD MLOAD DUP5 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x541 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"205:5565:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;433:172;205:5565;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1018:166;205:5565;;;;;;;;;;;;;;;289:87;205:5565;;;;;;;;;;;;;;;661:173;205:5565;;;;;;;;;;;;;;;895:59;205:5565;;;;;;;;;;;;;;1254:173;205:5565;;;;;;;;;;;;;;;;;;;-1:-1:-1;205:5565:49;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_PERMIT_BATCH_TRANSFER_FROM_TYPEHASH()":"3eb8b8fd","_PERMIT_BATCH_TYPEHASH()":"6302c3cf","_PERMIT_BATCH_WITNESS_TRANSFER_FROM_TYPEHASH_STUB()":"90bbf2f3","_PERMIT_DETAILS_TYPEHASH()":"6e4f2775","_PERMIT_SINGLE_TYPEHASH()":"c5df4f03","_PERMIT_TRANSFER_FROM_TYPEHASH()":"78f16830","_PERMIT_TRANSFER_FROM_WITNESS_TYPEHASH_STUB()":"84b8efbb","_TOKEN_PERMISSIONS_TYPEHASH()":"415e982d","_TOKEN_PERMISSIONS_TYPESTRING()":"c0c7fa7e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"_PERMIT_BATCH_TRANSFER_FROM_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_PERMIT_BATCH_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_PERMIT_BATCH_WITNESS_TRANSFER_FROM_TYPEHASH_STUB\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_PERMIT_DETAILS_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_PERMIT_SINGLE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_PERMIT_TRANSFER_FROM_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_PERMIT_TRANSFER_FROM_WITNESS_TYPEHASH_STUB\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_TOKEN_PERMISSIONS_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_TOKEN_PERMISSIONS_TYPESTRING\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/libraries/PermitHash.sol\":\"PermitHash\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x14cf8839107a3b30fbd02e92b1506d8ee25a002b6d1dd37ff2745b2adbaf4f2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb1a740ae82ee2f704135927e817780971356b41288e6b044c43ac9e3cb8e97d\",\"dweb:/ipfs/Qmbi1ZZREFLnNyAfpvPpgRYYdxCTemqTr5krfX6ufVA7D2\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xbab1c35f0a63761be6b50a9a2ce2459b63f09587dd9c6ac46955252a1a04f43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://225dca1a3d91c0737fe75c72bfecae391fc2e7b2eb2ebe1a154bfb16a7527972\",\"dweb:/ipfs/QmdGQdUCANKZ6S23TyHDtBnGvr6CtyyqNNcziVTjEHJ5rk\"]},\"permit2/src/libraries/PermitHash.sol\":{\"keccak256\":\"0x54af80d9c3193934c6947c31f59b8f3d7918f83676fe92ed6136593ad591d478\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5264001770be2cdeb7651e4d22af7edbc4e16da6d38747efeb4f54b5472ca5c5\",\"dweb:/ipfs/QmPvwau7DXw6stGQ14hpyTeLdYDYrrrdMnUfkQTPpMXQxz\"]}},\"version\":1}"}},"permit2/src/libraries/SafeCast160.sol":{"SafeCast160":{"abi":[{"inputs":[],"name":"UnsafeCast","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"58:396:50:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"58:396:50:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnsafeCast\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"UnsafeCast()\":[{\"notice\":\"Thrown when a valude greater than type(uint160).max is cast to uint160\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/libraries/SafeCast160.sol\":\"SafeCast160\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/libraries/SafeCast160.sol\":{\"keccak256\":\"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7\",\"dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi\"]}},\"version\":1}"}},"permit2/src/libraries/SignatureVerification.sol":{"SignatureVerification":{"abi":[{"inputs":[],"name":"InvalidContractSignature","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSignatureLength","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"112:1699:51:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"112:1699:51:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidContractSignature()\":[{\"notice\":\"Thrown when the recovered contract signature is incorrect\"}],\"InvalidSignature()\":[{\"notice\":\"Thrown when the recovered signer is equal to the zero address\"}],\"InvalidSignatureLength()\":[{\"notice\":\"Thrown when the passed in signature is not a valid length\"}],\"InvalidSigner()\":[{\"notice\":\"Thrown when the recovered signer does not equal the claimedSigner\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/libraries/SignatureVerification.sol\":\"SignatureVerification\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x96f516510d08da5b1d05d81b0bd88af6f9928bb757ba55c27e203654dfcd4fa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0942604688c369aed50905d7cef2ece68e1ff457c95a14c9f913babac29a09a\",\"dweb:/ipfs/Qmf4ZBYCKqQHfnACciz8GEMhwxPw7mhQ6fjGXwpgr8CQF8\"]},\"permit2/src/libraries/SignatureVerification.sol\":{\"keccak256\":\"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab\",\"dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i\"]}},\"version\":1}"}},"solmate/src/tokens/ERC1155.sol":{"ERC1155":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Minimalist and gas efficient standard ERC1155 implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solmate/src/tokens/ERC1155.sol\":\"ERC1155\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]}},\"version\":1}"},"ERC1155TokenReceiver":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A generic interface for a contract which properly accepts ERC1155 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solmate/src/tokens/ERC1155.sol\":\"ERC1155TokenReceiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solmate/src/tokens/ERC1155.sol\":{\"keccak256\":\"0x00502c7d7671d9dce495858572943999633ac298f20dbb70476280a93720d412\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62c6b793ba478e87398fa891a36f936ece0df7f9d4b0d0e1e3a853b8b707c181\",\"dweb:/ipfs/QmeRJVA9f1txCw7JRW31JszJH3a1abQjxJszfF5acsh8sk\"]}},\"version\":1}"}},"solmate/src/tokens/ERC20.sol":{"ERC20":{"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":"amount","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","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":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"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\":\"\",\"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\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)\",\"details\":\"Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Modern and gas efficient ERC20 + EIP-2612 implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solmate/src/tokens/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}"}},"solmate/src/tokens/ERC721.sol":{"ERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Modern, minimalist, and gas efficient ERC-721 implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solmate/src/tokens/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]}},\"version\":1}"},"ERC721TokenReceiver":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A generic interface for a contract which properly accepts ERC721 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solmate/src/tokens/ERC721.sol\":\"ERC721TokenReceiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]}},\"version\":1}"}},"solmate/src/utils/SafeTransferLib.sol":{"SafeTransferLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760119081601d823930815050f35b600080fdfe600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x11 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"445:5321:55:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"445:5321:55:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)\",\"details\":\"Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Safe ETH and ERC20 transfer library that gracefully handles missing return values.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solmate/src/utils/SafeTransferLib.sol\":\"SafeTransferLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x2725cc1d6f78a6aba23f6b5421f064dea9dfdadeb4689bf987f8962d62383746\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c94c2cf587af021525b6ef9fa2cf42cf2144b4956d7fb48a9bb4142185d04cf6\",\"dweb:/ipfs/Qmf5CkSKGwEJVCmFRNK66M6WyCxBU8aPyuhDSTsBeVpsne\"]}},\"version\":1}"}}}}}